尝试通过实现条件和含义来使用 awk

尝试通过实现条件和含义来使用 awk

我有一个包含 8 列的文件,我的任务之一是获取第 3 列的值,如果该行的值不等于 123,则将打印 8 列,因此如果第 3 列等于 123,则不会显示任何内容打印

程序的一部分是->

testing=`echo $C3  | awk '!/123/ {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt` 

相关的错误是

 awk: illegal field $(), name "C1"
 input record number 1, file 
 source line number 1

我发现对于不包含123它的行可以编写脚本 awk '!/123/'使用 grep 进行负匹配(匹配不包含 foo 的行)

我也尝试过

testing=`echo $C3  | awk '!/123/ ; END {print $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8,}'>>final.txt` 

然而它也给出了一个错误。

答案1

awk专门为处理柱状文件而设计。它将自动在空格(或您通过其开关提供的任何其他内容-F)上分割每个输入行,然后这些列将可用于awkas $1, $2, ..., $N

因此,要打印第三列(由空格定义)不是 的行123,您可以这样做:

awk '$3!="123"' file

当某项评估为 true 时的默认操作awk是打印。因此,上面的命令将打印file第三列不是 的所有行123

相关内容