使用awk添加包含从现有列拆分的数据的新列

时间:2013-08-17 22:26:19

标签: sed awk gawk

这可以用awk实现吗? 我希望添加一个新列,该列具有来自现有列的分隔数据。 我的输入文件是制表符分隔的文本文件。 带有device-0,device-1的列是从phone-0-1,phone-1-2。

派生的新列

输入:

category1    phone-0-1   working     0000   0000     new     0
category1    phone-1-2   working     0000   0000     new     0
category1    phone-2-4   working     0000   0000     new     0
category1    phone-3-5   working     0000   0000     new     0
category1    phone-4-6   working     0000   0000     new     0

输出:

category1    device-0   phone-0-1    working     0000   0000     new     0
category1    device-1   phone-1-2    working     0000   0000     new     0
category1    device-2   phone-2-4    working     0000   0000     new     0
category1    device-3   phone-3-5    working     0000   0000     new     0
category1    device-4   phone-4-6    working     0000   0000     new     0

1 个答案:

答案 0 :(得分:3)

试试这个sed行,看看它是否有效:

 sed 's/\sphone-[0-9]\+/&\t&/' file
与awk相同的想法:

awk -F'\t' -v OFS='\t' '{sub(/phone-[0-9]+/,"&\t&",$2)}7' file

编辑,重命名为设备:

sed 's/\(\s\+\)phone-\([0-9]\+\)/\1device-\2&/' file