以逗号分隔的行转置数据

时间:2012-01-06 15:35:49

标签: python bash

我有一个文件,其中包含一列和200行(200 * 1)的数据。

我希望将这些数据放在一行中,并以逗号分隔。

示例文件

Paul
Pammy
Jacob
Robin 

输出

Paul, Pammy, Jacob, Robin

6 个答案:

答案 0 :(得分:5)

使用sed

sed ':a;{N;s/\n/, /};ba' INPUT_FILE

说明:

我不是sed的专家,但这就是上述单行意味着:

  1. :a

    :label命令创建一个命名标签a。与标签ba分支一起使用时。这对于创建循环和转义到脚本末尾以打印当前模式空间非常有用。

  2. N

    N只需使用\n将下一行附加到模式空间。

  3. s/\n/, /

    由于新行已使用\n附加到模式空间,因此我们使用此替换将\n替换为,space OP的要求。

  4. 测试:

    [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