gpt4 book ai didi

awk:从输入打印匹配组

转载 作者:行者123 更新时间:2023-12-05 09:19:50 27 4
gpt4 key购买 nike

我有一个日志文件,我在其中寻找字符串 --location http://example.com/whatever 并且我只对 URL 感兴趣。它是多行输入,这个 location 字符串在其中一行的某处,我不知道它在哪一行以及在哪一行。

使用这个 awk 脚本很容易打印它:

/--location ([^ ]+)/ {
match($0, "--location ([^ ]+)", m);
print m[1]
}

然而,由于我已经在 /--location .../ 模式中匹配了我想要的内容,因此运行另一个 match() 感觉不对非常相同的模式。

我想知道是否可以从 /--location ([^ ]+)/ 打印组匹配并在没有调用 match() 的情况下离开?

如果需要的话,我正在使用 gawk 3.1

谢谢!

最佳答案

尝试:

awk 'match($0, "--location ([^ ]+)", m) {print m[1]}' file

例子

考虑这个测试文件:

$ cat file
a b --location FindMe1 cde
a b --location
--location FindMe2 a b

我们的命令产生这个输出:

$ awk 'match($0, "--location ([^ ]+)", m) {print m[1]}' file
FindMe1
FindMe2

工作原理

表达式 match($0, "--location ([^ ]+)", m) 如果找到匹配项则返回真 (1),如果未找到匹配项则返回假 (0) .因此,它用作操作 print m[1] 的条件。因此,只有在找到匹配项时才会打印。

关于awk:从输入打印匹配组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39481412/

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