在记事本或bbedit中使用','替换换行符或使用unix命令tr?

时间:2012-12-24 05:25:27

标签: unix notepad tr bbedit

我必须用','替换换行符,以便在一些oracle命令中使用,但只能在一个命令中使用。我无法弄明白该怎么做。

输入:

R1
R2
R3
R4

必需输出:

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

5 个答案:

答案 0 :(得分:2)

使用sed:

 sed -n '1h;1!H;${ g; s/\n/,/g; s/\([^,]*\)/'\''\1'\''/gp}' input

答案 1 :(得分:2)

这是使用sed的一种方式:

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

结果:

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

答案 2 :(得分:2)

在BBedit中,你可以使用像这样的grep来查找:

(R[0-9]+)\r

并替换:

'\1', 

答案 3 :(得分:1)

使用tr

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

如果您需要引号,可以输入sed

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

...让你非常接近:

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

答案 4 :(得分:1)

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

paste -s -d, input

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

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

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

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