![如何 awk 仅输出包含关键字的行?](https://linux22.com/image/187711/%E5%A6%82%E4%BD%95%20awk%20%E4%BB%85%E8%BE%93%E5%87%BA%E5%8C%85%E5%90%AB%E5%85%B3%E9%94%AE%E5%AD%97%E7%9A%84%E8%A1%8C%EF%BC%9F.png)
我正在编写一个小脚本,它检查浏览器选项卡上的某些关键字。如果存在关键字,则脚本将关闭选项卡。该脚本实际上是一个适用于每个浏览器的简单“块站点”脚本,只要 python 程序支持该浏览器即可“布罗塔布”作者:尤里·博奇卡列夫。比安装浏览器插件更安全。
我的第一行有效的代码是
bt list | grep keyword > tmp-file; cut -c 1-7 < tmp-file | bt close
但是此代码不符合 KISS 要求并且实际上是有缺陷的,因为 TAB-ID 并不总是包含正好七个字符。
因此我学习了一些 AWK 并且 - 谢谢对于这个答案- 想出了以下命令
bt list | awk -F "[\t]" '/keyword/{print$1}'
现在可以了!
对于其他新手: -F 指定字段分隔符, \t 将其设置为制表符。 {print$1} 告诉 awk 仅输出第一个字段。
第二个问题:我想屏蔽多个关键字。我考虑过使用关键字文件。最好的做法是什么?我考虑过编写一个内循环for i in "./keywords.txt"; do ...; done;
外循环将是每 x 秒测试一次的脚本,如果已打开带有阻止标题的选项卡。
如果我想使用多个关键字