【发布时间】:2017-11-07 10:14:11
【问题描述】:
原始文件如下所示:
stat.sn 15094 291 usf=630 ind=32615 on_2=ON-14-6003 spd=307 i_pow=150
stat.sn 15094 361 usf=630 ind=32658 spd=307 i_pow=150
stat.sn 15094 360 usf=630 ind=32658 spd=307 i_pow=150
stat.sn 15094 272 usf=630 ind=32615 on_2=ON-14-6003 spd=307 i_pow=150
stat.sn 15094 276 usf=630 ind=32615 on_2=ON-14-6003 spd=307 i_pow=150
我需要它是这样的:
stat.sn 15094 291 usf=630 ind=32615 spd=307 i_pow=150 on_2=ON-14-6003
stat.sn 15094 361 usf=630 ind=32658 spd=307 i_pow=150
stat.sn 15094 360 usf=630 ind=32658 spd=307 i_pow=150
stat.sn 15094 272 usf=630 ind=32615 spd=307 i_pow=150 on_2=ON-14-6003
stat.sn 15094 276 usf=630 ind=32615 spd=307 i_pow=150 on_2=ON-14-6003
简单地说:如果on_2连续存在,应该是连续最后一个值。 其余值的顺序应保持不变。
如果存在,on_2 始终是第 6 个字段 - 在 ind 之后和 spd 之前。所有字段在每一行中的位置相同。
我猜想 awk 可以做到这一点,但不知道该怎么做。
【问题讨论】:
-
您尝试过什么吗?假设您知道
awk可以做到这一点? -
@EdMorton 只是将 on_2 设置为最后一个值/列(如果存在)并保留与其他列相同的顺序。
-
edit 你的问题是要说明这一点以及任何其他迄今为止未说明的要求,包括“on_2”字段是否总是出现在同一个位置(如果它没有然后更新你的例子) .
-
on_2 field always occurs in the same spot - after ind and before spd好的,ind 和 spd 总是出现在同一个位置吗?我试图让您简单地告诉我们 on_2 是否始终是第 6 个字段,或者我们是否必须搜索ind然后on_2将在之后搜索,无论它出现在哪里。 -
是的,如果存在,on_2 始终是第 6 个字段。