Sed 使用awk从现有列中拆分数据,添加新列

Sed 使用awk从现有列中拆分数据,添加新列,sed,awk,gawk,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 pho

这可以通过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

尝试此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

尝试此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

谢谢,你的解决方案行得通。对不起,我的问题漏了一点。是否也可以将手机重命名为设备?见编辑question@SantoshPillai请参阅编辑SEDthank之后,设备和电话列之间的选项卡丢失。您的解决方案有效。对不起,我的问题漏了一点。是否也可以将手机重命名为设备?见编辑question@SantoshPillai请参阅编辑sed后,设备和电话列之间的选项卡缺失