awk过滤文件指定列包含关键字的行

linux中grep默认过滤文件所有内容,如果我只想过滤指定第3列有没有指定关键字,并显示指定行的所有内容,则比较麻烦。这时候可以使用awk命令实现。

如果你想要在过滤指定第3列中包含某个关键字的行时,输出整行内容,可以直接使用 awk 来完成这个需求。以下是一个示例命令:

假设你的文件是 data.txt,并且你想要查找第3列中包含 keyword2 的整行内容,可以使用以下命令:

awk '$3 == "keyword2"' data.txt

或者,如果你想要查找包含 keyword2 的任意行(而不仅仅是精确匹配),可以使用:

awk '$3 ~ /keyword2/' data.txt

这样,awk 会检查每一行的第3列,如果该列中包含 keyword2(或完全等于 keyword2),就会输出整行内容。

例子

假设 data.txt 文件内容如下:

123   abc   keyword1
456   def   keyword2
789   ghi   keyword3

执行上述的 awk '$3 ~ /keyword2/' data.txt 命令,输出将是:

456   def   keyword2

这样你就能获得包含指定关键字的整行内容。

过滤指定变量值

要在 awk 中使用 shell 变量(例如 $HOSTNAME),你可以使用 -v 选项将该变量传递给 awk。以下是如何将 keyword2 替换为 shell 变量 $HOSTNAME 的示例:

awk -v hostname="$HOSTNAME" '$3 == hostname' data.txt

在这个命令中:

  • -v hostname="$HOSTNAME" 将 shell 变量 $HOSTNAME 传递给 awk,并将其赋值给 awk 中的变量 hostname
  • 然后你可以在 awk 的条件中使用 hostname 来进行比较。

这样就可以在 awk 中使用 shell 变量了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值