样本文件
[user@linux ~]$ cat ip.txt
10.1.1.1
10.1.1.2
10.1.1.3
[user@linux ~]$
第一次尝试,,
之后有1个空格
[user@linux ~]$ tr '\n' ', ' < ip.txt
10.1.1.1,10.1.1.2,10.1.1.3,[user@linux ~]$
第二次尝试,,
前后有1个空格
[user@linux ~]$ tr '\n' ' , ' < ip.txt
10.1.1.1 10.1.1.2 10.1.1.3 [user@linux ~]$
[user@linux ~]$
在,
之前有1个空格的第3次尝试也产生了与第2次尝试相同的输出
[user@linux ~]$ tr '\n' ' ,' < ip.txt
10.1.1.1 10.1.1.2 10.1.1.3 [user@linux ~]$
[user@linux ~]$
更新
sed
没有任何改变
[user@linux ~]$ sed 's/\n/, /g' ip.txt
10.1.1.1
10.1.1.2
10.1.1.3
[user@linux ~]$
虽然perl
的输出与尝试2和3相似
[user@linux ~]$ perl -pe 's/\n/ /g' ip.txt
10.1.1.1 10.1.1.2 10.1.1.3 [user@linux ~]$
所需的输出
在,
后面的一行中{p> 1个空格,像这样...
10.1.1.1, 10.1.1.2, 10.1.1.3
答案 0 :(得分:1)
我相信tr
只能将一个字符替换为另一个字符,并且不能用于插入更多字符。试试这个
sed ':a;N;$!ba;s/\n/, /g' ip.txt
或
perl -pe 's/\n/, /g' ip.txt
如果要转义最后一个逗号,则
sed ':a;N;$!ba;s/\n/, /g' ip.txt | sed 's/\n$//g'
答案 1 :(得分:1)
tr只能用于替换一个字符。
您不能用两个字符代替。
您可以使用sed或awk搜索