5

我有一个文件 file.txt 女巫有这些条目

纽约

洛杉矶

顺丰

我运行了命令 tr '\n' ',' < file.txt 并成功删除了所有换行符。

我需要在同一个 file.txt 文件中的所有这些输出,所以我像这样重定向输出

tr '\n' ',' <文件.txt> 文件.txt,

但它没有在 file.txt 中放置任何内容,结果文件为空,谁能向我解释为什么tr的输出由于重定向而丢失。

4

3 回答 3

6

因为它首先打开输出文件,删除文件中的内容,然后对 tr 命令没有任何感觉并返回到空文件

tr '\n' ',' < file.txt > file2.txt 

将工作

于 2013-02-03T18:45:38.227 回答
0

既然您已经用 标记了您的问题sed,我建议使用 sed oneliner,sed 也可以使用选项“-i”“就地”更改您的文件

sed -i ':a $!N; s/\n/,/; ta' file

或使用 awk

 

awk '{x=x""sprintf($0",")}END{gsub(/,$/,"",x);print x}' file

不像 sed,awk 没有“就地”更改选项,您必须:

awk '...' file > /tmp/mytmp && mv /tmp/mytmp file
于 2013-02-03T20:46:14.090 回答
0

如果你只是想用,你替换换行符可以我们这个

awk 'ORS=","' temp.txt > file.txt

于 2013-02-04T02:36:14.727 回答