我想用昏迷或空格替换文本中的新行,但不要更改最后一个新行。
我知道这个问题:How to replace newlines with tab characters? - 但它会在结尾处生成一个标签,而不是新行。
到目前为止,我已经来了:
awk 'NR>1{printf","} {printf $1} END{printf"\n"}'
有更简单的方法吗?这不是一项任务,我只是好奇想要升级我的脚本。
答案 0 :(得分:7)
这可能对您有用:
paste -s -d, file
或
paste -s -d" " file
答案 1 :(得分:2)
这应该做的工作:
echo ${$(tr '\n' ',' < file)%?}
或者也许使用sed:
sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/,/g' file
答案 2 :(得分:1)
使用perl
并不像paste
那么简单,但它确实推广到更多案例:
perl -0pe 's/\n(?!$)/,/g' filename # comma
perl -0pe 's/\n(?!$)/ /g' filename # space
(?!$)
是一个前瞻性断言,意思是“不在最后”,所以最后一个换行单独留下。
答案 3 :(得分:0)
您可以使用sed命令删除结尾“,”
# sed -i 's/,$//g' endmodify.txt
# cat endmodify.txt
root
bin
daemon
adm
lp
sync
games
gopher
感谢。