在linux中将三行转换为一行

时间:2013-12-21 21:37:31

标签: linux converter

我是Unix新手。

我有以下文件:

AB 123-01 vl 278
AB 123-01 na "aa"
AB 123-01 eg 5,6

AB 445-01 vl 521
AB 445-01 na "cd"
AB 445-01 eg 7,6

AB 945-01 vl 215
AB 945-01 na "Discreet"
AB 945-01 eg 1,6

我想获得以下输出:

AB 123-01,278,aa,5,6
AB 445-01,521,cd,7,6
AB 945-01,215,Discreet,1,6

用逗号将三行转换为一行(总是三行) 并删除单词:vl,na,例如

1 个答案:

答案 0 :(得分:2)

如果您喜欢单行班轮,可以使用awk。

输入filename.txt

AB 123-01 vl 278
AB 123-01 na "aa"
AB 123-01 eg 5,6

AB 445-01 vl 521
AB 445-01 na "cd"
AB 445-01 eg 7,6

AB 945-01 vl 215
AB 945-01 na "Discreet"
AB 945-01 eg 1,6

代码:

awk 'BEGIN {RS=NULL} {printf("%s %s,%s,%s,%s\n", $1, $2, $4, substr($8,2,length($8)-2), $12)}' filename.txt

输出

AB 123-01,278,aa,5,6
AB 445-01,521,cd,7,6
AB 945-01,215,Discreet,1,6