![尝试通过实现条件和含义来使用 awk](https://linux22.com/image/78866/%E5%B0%9D%E8%AF%95%E9%80%9A%E8%BF%87%E5%AE%9E%E7%8E%B0%E6%9D%A1%E4%BB%B6%E5%92%8C%E5%90%AB%E4%B9%89%E6%9D%A5%E4%BD%BF%E7%94%A8%20awk.png)
我有一个包含 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
)上分割每个输入行,然后这些列将可用于awk
as $1
, $2
, ..., $N
。
因此,要打印第三列(由空格定义)不是 的行123
,您可以这样做:
awk '$3!="123"' file
当某项评估为 true 时的默认操作awk
是打印。因此,上面的命令将打印file
第三列不是 的所有行123
。