3

我必须用“,”替换换行符,以便在某些 oracle 命令中使用,但在单个命令中使用。我不知道该怎么做。

输入:

R1
R2
R3
R4

所需输出:

'R1','R2','R3','R4'
4

5 回答 5

2

使用 sed:

 sed -n '1h;1!H;${ g; s/\n/,/g; s/\([^,]*\)/'\''\1'\''/gp}' input
于 2012-12-24T05:44:51.427 回答
2

这是一种使用方法sed

sed ":a;N;\$!ba;s/\n/','/g;s/^\|$/'/g" file

结果:

'R1','R2','R3','R4'
于 2012-12-24T06:00:28.807 回答
2

在 BBedit 中,您可以使用类似这样的 grep 进行查找:

(R[0-9]+)\r

并替换:

'\1', 
于 2012-12-24T14:17:12.470 回答
1

使用tr

cat data.txt | tr '\n' ','

如果您需要引号,您可以通过管道发送到sed

cat data.txt | tr '\n' ',' | sed "s/,/','/g"

......这让你非常接近:

R1','R2','R3','R4','
于 2012-12-24T05:33:38.897 回答
1

替换换行符的要求与您的示例输出不匹配。要将换行符替换为,,您可以这样做tr \\n ,,但这会为您提供带有尾随逗号且没有尾随换行符的输出。此外,它没有引用您的输入。也许您正在寻找:

paste -s -d, input

或者,如果您确实希望引用字段:

< input sed "s/^\|$/'/g" | paste -s -d,

在上面,您的输入文件名为input. 最后的命令也可以写成:

sed "s/^\|$/'/g" input | paste -s -d,
于 2012-12-24T13:14:20.110 回答