我想用逗号或空格替换文本中的新行,但不要更改最后一个新行。
我知道这个问题:如何用制表符替换换行符?- 但它确实会在末尾产生一个制表符而不是新行。
到目前为止,我已经有了:
awk 'NR>1{printf","} {printf $1} END{printf"\n"}'
有没有更简单的方法来做到这一点?这不是一项任务,我只是想提高我的脚本水平。
这可能对您有用:
paste -s -d, file
或者
paste -s -d" " file
这应该做的工作:
echo ${$(tr '\n' ',' < file)%?}
或者也许使用 sed:
sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/,/g' file
使用perl
并不像 那么简单paste
,但它确实可以推广到更多情况:
perl -0pe 's/\n(?!$)/,/g' filename # comma
perl -0pe 's/\n(?!$)/ /g' filename # space
这(?!$)
是一个前瞻断言,意思是“不在末尾”,所以最后一个换行符被单独留下。
您可以使用 sed 命令删除结尾的“,”
# sed -i 's/,$//g' endmodify.txt
# cat endmodify.txt
root
bin
daemon
adm
lp
sync
games
gopher
谢谢。