用一个衬垫将最后一个字段复制到每个成员行

时间:2016-12-30 14:46:20

标签: awk sed

寻找一个awk one liner,用于格式化此格式文件中的某些文本,其中字段数和行数是任意的:

abcd,abce,test1
bbcd,bbee,bbvc,test2
ccdd,ccbb,ccbd,ccab,testxyz

其中output是每行中最后一个字段附加到行中每个字段的位置:

abcd,test1
abce,test1
bbcd,test2
bbee,test2
bbvc,test2
ccdd,testxyz
ccbb,testxyz
ccbd,testxyz
ccab,testxyz

2 个答案:

答案 0 :(得分:2)

假设所有行至少有2个字段:

ActiveSheet.PageSetup.PrintArea = "A1:F100"

可以做你期望的事。

如果只有一个字段的行可以打印出来:

awk -F, '{OFS=","; for(i=1;i<NF;i++) print $i,$NF}' file

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -r 's/,(.*(,[^,]*))$/\2\n\1/;P;D' file

如果该行包含2个或更多逗号,请用逗号,最后一个字段和换行符替换第一个逗号,打印第一行,删除第一行并重复。