我有一个文件,其中包含一列和200行(200 * 1)的数据。
我希望将这些数据放在一行中,并以逗号分隔。
示例文件
Paul
Pammy
Jacob
Robin
输出
Paul, Pammy, Jacob, Robin
答案 0 :(得分:5)
sed
:sed ':a;{N;s/\n/, /};ba' INPUT_FILE
我不是sed
的专家,但这就是上述单行意味着:
:a
:label
命令创建一个命名标签a
。与标签ba
分支一起使用时。这对于创建循环和转义到脚本末尾以打印当前模式空间非常有用。
N
N
只需使用\n
将下一行附加到模式空间。
s/\n/, /
由于新行已使用\n
附加到模式空间,因此我们使用此替换将\n
替换为,
和space
OP的要求。
[jaypal:~/Temp] cat file
Paul
Pammy
Jacob
Robin
[jaypal:~/Temp] sed ':a;{N;s/\n/, /};ba' file
Paul, Pammy, Jacob, Robin
答案 1 :(得分:4)
awk
$ awk -v ORS=, 1 file.txt | sed 's/,$/\n/'
Paul,Pammy,Jacob,Robin
-v ORS=,
设置由,
1
TRUE,因此请打印每条记录sed 's/,$/\n/'
删除结尾,
sed
$ sed -n '1h;1!H;${g;s/\n/,/gp}' file.txt
Paul,Pammy,Jacob,Robin
-n
压制输出1h
将第一行放入持有空间1!H
将第二行〜最后一行追加到持有空间${...}
执行...针对最后一行g
从持有空间获取所有内容s/\n/,/g
将\n
替换为,
p
打印tr:
$ tr '\n' ',' <file.txt | sed 's/,$/\n/'
答案 2 :(得分:2)
这似乎有效,在unix / linux上使用'tr'命令
tr '\n', ',' < yourfile
答案 3 :(得分:1)
在Python中
', '.join(open("yourinputfile").read().splitlines())
在Bash中
cat test.txt|xargs -I {} echo -n {},
答案 4 :(得分:0)
Perl:
perl -pe 'chomp; print ", " if $. - 1'
答案 5 :(得分:0)
这可能对您有用:
paste -d, -s file.txt