Unix - 将所有行组合成逗号分隔的单行

时间:2016-07-20 19:56:15

标签: linux unix

我在文件中有以下单独的值:
加州
纽约
华盛顿
南卡罗来纳州 堪萨斯

unix脚本在一行中显示什么(如下图所示)
' California',' New York'' Washington'' South Carolina'' Kansas'
[我不希望有任何中间文件来实现这一点..只需一个echo代码就可以了]

2 个答案:

答案 0 :(得分:2)

使用此命令tr '\n' ',' < input_file

单引号使用 sed -e "s/^/'/" input_file | sed -e "s/$/'/" | tr '\n' ','

(未针对单/双引号转义问题进行测试)

对于变量 NEW_VAR=$(echo $VAR | sed -e "s/^/'/" | sed -e "s/$/'/" | tr '\n' ',')

答案 1 :(得分:0)

您需要使用awk格式化输出。 sed and awk是否响铃?

The file <test.txt>
California
New York
Washington
South Carolina
Kansas

$ grep input file | awk '{print}' ORS=', '

California, New York, Washington, South Carolina, Kansas

然后连接你的字符串并注意正确的输出。

用awk你可以试试这个

sudo awk -F'\n' '{if(NR == 1) {printf "\x27" $0 "\x27"} else {print "," "\x27" $0 "\x27"}}' test.txt

'California','New York','Washington','South Carolina','Kansas'

你也可以尝试这个

sudo awk 'BEGIN {RS=""}{gsub(/\n/,"\x27,\x27",$0); print $0}' test.txt