换行符替换(shell命令删除换行符小坑)
在shell中,有时候我们需要对输入的文本进行处理,比如将换行符( \n )替换成逗号( , ),要怎么实现呢?
假设文件 file.txt 内容如下:
[root@localhost ~]# cat file.txt
第一行
第二行
第三行首先,使用 tr 命令进行替换,发现有个小坑,原本文件中最后一个回车符也替换成了逗号,这不要我们想要的结果,最后一个逗号应该删除
[root@localhost ~]# cat file.txt | tr "\n" ","
第一行,第二行,第三行,[root@localhost ~]# 删除最后一个字符
第一种方法:使用sed命令
.$ 表示行未的最后一个字符,利用sed将其替换成空
[root@localhost ~]# cat file.txt | tr "\n" "," | sed 's/.$//g'
第一行,第二行,第三行[root@localhost ~]# 第二种方法:字符串处理命令
% 表示去掉右边的最小匹配
[root@localhost ~]# var=`cat file.txt | tr "\n" ","`
[root@localhost ~]# echo ${var}
第一行,第二行,第三行,
[root@localhost ~]# echo ${var%,} #去掉字符串最右边的逗号
第一行,第二行,第三行
[root@localhost ~]# echo ${var%?} #去掉字符串最右边的任意符号
第一行,第二行,第三行大家还有其它方法吗?

