我有一个文件file.txt女巫有这些条目
NY
LA
SF
我运行命令tr'\ n'','< file.txt并成功删除了所有换行符。
我需要在同一个file.txt文件中输出所有这些内容,所以我重定向了这样的输出
tr'\ n'','< file.txt> file.txt,
但它没有在file.txt中添加任何内容,结果文件为空,任何人都可以向我解释为什么 tr 的输出因重定向而丢失。
答案 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