tr命令无法指示输出?

时间:2013-02-03 18:37:20

标签: linux sed tr

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

  

NY

     

LA

     

SF

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

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

  

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

但它没有在file.txt中添加任何内容,结果文件为空,任何人都可以向我解释为什么 tr 的输出因重定向而丢失。

3 个答案:

答案 0 :(得分:5)

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

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

将起作用

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您只想将换行符替换为,,则可以使用此

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