我必须用“,”替换换行符,以便在某些 oracle 命令中使用,但在单个命令中使用。我不知道该怎么做。
输入:
R1
R2
R3
R4
所需输出:
'R1','R2','R3','R4'
使用 sed:
sed -n '1h;1!H;${ g; s/\n/,/g; s/\([^,]*\)/'\''\1'\''/gp}' input
这是一种使用方法sed
:
sed ":a;N;\$!ba;s/\n/','/g;s/^\|$/'/g" file
结果:
'R1','R2','R3','R4'
在 BBedit 中,您可以使用类似这样的 grep 进行查找:
(R[0-9]+)\r
并替换:
'\1',
使用tr
:
cat data.txt | tr '\n' ','
如果您需要引号,您可以通过管道发送到sed
:
cat data.txt | tr '\n' ',' | sed "s/,/','/g"
......这让你非常接近:
R1','R2','R3','R4','
替换换行符的要求与您的示例输出不匹配。要将换行符替换为,
,您可以这样做tr \\n ,
,但这会为您提供带有尾随逗号且没有尾随换行符的输出。此外,它没有引用您的输入。也许您正在寻找:
paste -s -d, input
或者,如果您确实希望引用字段:
< input sed "s/^\|$/'/g" | paste -s -d,
在上面,您的输入文件名为input
. 最后的命令也可以写成:
sed "s/^\|$/'/g" input | paste -s -d,