用逗号和 space 替换换行符以产生 1 行输出

Replace newline with comma and space to produce 1 line output

示例文件

[user@linux ~]$ cat ip.txt
10.1.1.1
10.1.1.2
10.1.1.3
[user@linux ~]$

,

之后第一次尝试 1 space
[user@linux ~]$ tr '\n' ', ' < ip.txt
10.1.1.1,10.1.1.2,10.1.1.3,[user@linux ~]$

第 2 次尝试 ,

前后 1 space
[user@linux ~]$ tr '\n' ' , ' < ip.txt
10.1.1.1 10.1.1.2 10.1.1.3 [user@linux ~]$
[user@linux ~]$

, 之前进行 1 space 的第 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 ~]$

期望输出

1 space 在 , 之后像这样在一行中...

10.1.1.1, 10.1.1.2, 10.1.1.3

我认为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'

tr 可用于仅将一个字符替换为一个字符。

不能用两个字符替换。

您可以使用 sed 或 awk 搜索