gpt4 book ai didi

shell - AWK 完全匹配方括号内的字符串

转载 作者:行者123 更新时间:2023-12-04 16:16:50 25 4
gpt4 key购买 nike

我有一个类似于下图数据的文件。

https://www.test.example.com [503]
https://www.tst.example.com [403]
https://www.tt.example.com [302]

我想获取与第二列匹配的行。例如,匹配 [403] 的行应该只打印 https://www.tst.example.com

我尝试使用以下命令转义方括号,这给了我一个警告。

$ awk -F "$2 == '\[403]\'" file.txt
awk: warning: escape sequence `\[' treated as plain `['
awk: warning: escape sequence `\'' treated as plain `''

最佳答案

您正在混合使用正则表达式和纯字符串。 [ 是一个正则表达式特殊字符,但是你在这里没有使用正则表达式,只是一个文字字符串比较。您根本不需要任何转义(尽管为了简单起见,您可能希望颠倒单引号和双引号的用法,除非您实际使用的是 Windows)。

awk '$2 == "[403]"' file.txt

在基本上所有的 Unix shell 中,您使用的双引号不保护美元符号,因此 $2 将被 shell 替换,可能什么都没有,或者用一些不相关的字符串(无论作为第二个命令行参数传递给 shell)。

-F 选项(如果存在)需要一个参数;但根据您的示例数据,默认字段分隔符 - 任何空格序列 - 应该可以正常工作。如果你想强制它例如一个空格,试试 -F ' '

关于shell - AWK 完全匹配方括号内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65448729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com