我有一个文件 file.txt 女巫有这些条目
纽约
洛杉矶
顺丰
我运行了命令 tr '\n' ',' < file.txt 并成功删除了所有换行符。
我需要在同一个 file.txt 文件中的所有这些输出,所以我像这样重定向输出
tr '\n' ',' <文件.txt> 文件.txt,
但它没有在 file.txt 中放置任何内容,结果文件为空,谁能向我解释为什么tr的输出由于重定向而丢失。
因为它首先打开输出文件,删除文件中的内容,然后对 tr 命令没有任何感觉并返回到空文件
tr '\n' ',' < file.txt > file2.txt
将工作
既然您已经用 标记了您的问题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
如果你只是想用,
你替换换行符可以我们这个
awk 'ORS=","' temp.txt > file.txt