我需要替换固定宽度文件中的列值,该文件的其中一列中具有未知值,并且需要用同一行中的某些列值替换该列值。
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
如果两者都不是,那么请编辑您的问题以澄清您的要求并提供更真实的代表性示例。