类似于问题“仅当其中的每一列都是$ VAR1或$ VAR2时才删除整行”
但它会删除整个COLUMN,而是基于列中每个ROW的组成
我有一个文本文件,其中列号和行号始终会变化,并且仅当该列中的每一行都等于$ VAR1或$ VAR2时,才希望从txt文件中删除所有列的全部。例如:
假设$ VAR1 =“ X”和$ VAR2 =“ N”,我想删除任何由$ VAR1和$ VAR2组成整个列的列。
这是我的输入:
hajn 32 ahnnd namm X 543 asfn F
namd 90 jsnfu namm X 098 asfn S
5739 dw 32eff Sfff N asd 3123 1
这将是我想要的输出:
hajn 32 ahnnd namm 543 asfn F
namd 90 jsnfu namm 098 asfn S
5739 dw 32eff Sfff asd 3123 1
我可以通过循环解决此问题,但我想知道是否有一种强大的方法可以做到这一点,最好是awk。
尝试以下方法,它也可以正常工作
VAR1="X"
VAR2="N"
Count_of_columns=`awk '{print NF}' filename| sort -nr| sed -n '$p'`
for((i=1;i<=$Count_of_columns;i++)); do awk -v i="$i" -v VAR1="$VAR1" -v VAR2="$VAR2" '$i == VAR1||$i == VAR2{$i="";print $0}' filename; done
输出
hajn 32 ahnnd namm 543 asfn F
namd 90 jsnfu namm 098 asfn S
5739 dw 32eff Sfff asd 3123 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句