全站导航
手机版
首页 > 购物 文章详情

在shell中,有时候我们需要对输入的文本进行处理,比如将换行符( \n )替换成逗号( , ),要怎么实现呢?

假设文件 file.txt 内容如下:

 [root@localhost ~]# cat file.txt
第一行
第二行
第三行

换行符替换(shell命令删除换行符小坑)

首先,使用 tr 命令进行替换,发现有个小坑,原本文件中最后一个回车符也替换成了逗号,这不要我们想要的结果,最后一个逗号应该删除

 [root@localhost ~]# cat file.txt | tr "\n" ","
第一行,第二行,第三行,[root@localhost ~]# 

换行符替换(shell命令删除换行符小坑)

删除最后一个字符

第一种方法:使用sed命令

.$ 表示行未的最后一个字符,利用sed将其替换成空

 [root@localhost ~]# cat file.txt | tr "\n" "," | sed 's/.$//g'
第一行,第二行,第三行[root@localhost ~]# 

换行符替换(shell命令删除换行符小坑)

第二种方法:字符串处理命令

% 表示去掉右边的最小匹配

 [root@localhost ~]# var=`cat file.txt | tr "\n" ","`
 [root@localhost ~]# echo ${var}
第一行,第二行,第三行,
 [root@localhost ~]# echo ${var%,}   #去掉字符串最右边的逗号
 第一行,第二行,第三行
 [root@localhost ~]# echo ${var%?}   #去掉字符串最右边的任意符号
 第一行,第二行,第三行

换行符替换(shell命令删除换行符小坑)

大家还有其它方法吗?

赞赏 您的鼓励使我们更新的动力
全网好价
相关文章
扫一扫 扫一扫,看更多