我使用sed
将我的新行\n
文件替换为','
但工作正常但是,在我的上一篇文章中,我并不想要,
。
如何删除此内容?
示例:
sed 's/\n/,/g' myfile.out > myfile.csv
输出:
1,2,3,4,5,6,
答案 0 :(得分:5)
你可以使用标签:
$ cat file
1
2
3
4
5
6
$ sed ':a;N;s/\n/,/;ba' file
1,2,3,4,5,6
您还可以使用粘贴命令:
$ paste -sd, file
1,2,3,4,5,6
答案 1 :(得分:3)
考虑jaypal singh's paste
solution,这是最有效和最优雅的。
awk
替代方案,它不需要首先将整个文件读入内存:
awk '{ printf "%s%s", sep, $0; sep = "," }' myfile.out > myfile.csv
如果输出应该有一个尾随换行符(谢谢,Ed Morton):
awk '{ printf "%s%s", sep, $0; sep = "," } END { printf "\n" }' myfile.out > myfile.csv
对于第一个输入行sep
,由于是未初始化的变量,默认为空字符串,有效打印输入行$0
。
在第一个sep
之后将","
设置为print
可确保所有剩余行都有,
前置。
END { printf "\n" }
在处理完所有输入行后打印一个尾随换行符。 (print ""
也会有效,因为print
会附加输出记录分隔符(ORS
),默认为换行符。
净效应是,
仅在输入行之间放置,因此输出不会有逗号。
答案 2 :(得分:2)
您可以在第一个s
之后添加第二个sed -z 's/\n/,/g ; s/,$//
命令。这会删除最后的逗号。 (选项-z
来自gnu sed,我需要它来使第一个s
命令正常工作。)