【发布时间】:2020-12-27 11:53:59
【问题描述】:
我想获取与第二列匹配的行。例如,匹配 [403] 的行应该只打印https://www.tst.example.com
下面给出的 awk 命令给了我一个空白输出。awk '$2 == "[403]"' file.txt
后来我使用 nano 编辑器检查了文本文件,并验证了第二列中的内容。括号内的文字有颜色代码。
https://www.test.example.com [^[[0;31m503^[[0m]
https://www.tst.example.com [^[[0;31m403^[[0m]
https://www.tt.example.com [^[[0;31m302^[[0m]
我还尝试了awk '$2 == "[^[[0;31m503^[[0m]"' file.txt,它给出了一个空白输出。
如何使用 grep 或 awk 执行此操作?
【问题讨论】:
-
你为什么首先将带有颜色代码的输出保存到文件中?
-
“与第二列匹配的行”是什么意思。您是否对其中包含 403 错误的行感兴趣 - 即匹配“[403]”的行?
-
@oguzismail 这是来自另一个脚本的输出文件
-
@costaparas - 是的,这正是我想要的
-
@JoelDeleep 因为这些颜色代码会给您带来问题,为什么不直接删除它们呢?从您发布的示例输入来看,您只需要
awk 'match($2,/[0-9]{3}/){$2="["substr($2,1,3)"]"}1'或sed 's/\(.* \).*\([0-9]\{3\}\).*/\1[\2]/'。