使用 AWK 命令我需要替换具有 0000000X 的特定列的列值

使用 AWK 命令我需要替换具有 0000000X 的特定列的列值

我需要替换固定宽度文件中的列值,该文件的其中一列中具有未知值,并且需要用同一行中的某些列值替换该列值。

      A      B      C      D        E    F      G     H     I     J      K     L      M      N
ex: 123908 456567 675674 0000000x 45678 09756 125678 45678 09756 125678 45678 09756 125678 45678 09756  

这里0000000x我需要用(G 列)代替(D 列)125678

我努力了:

awk 'BEGIN{FS=OFS=""}{f=0;for(i=292;i<=300;i++){if($i!~/0000000X/){f=1}};if(f) {for(i=292;i<=300;i++){$i=2}};print }'

此命令针对所有行中的相应列进行更改。但我需要针对具有该0000000x值的特定列进行更改。

答案1

鉴于此输入:

$ cat file
a X c D e X f
a B c D e X f

听起来你正在尝试这样做:

$ awk '$2=="X"{$2=$4} 1' file
a D c D e X f
a B c D e X f

或这个:

$ awk '{for (i=1;i<=NF;i++) if ($i=="X") $i=$4} 1' file
a D c D e D f
a B c D e D f

如果两者都不是,那么请编辑您的问题以澄清您的要求并提供更真实的代表性示例。

相关内容