gpt4 book ai didi

linux - 脚本 shell : grep specific lines - extract specific strings - put them on a file

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:09:32 25 4
gpt4 key购买 nike

我试图从 appache2 accesslog.log 文件中 grep 包含以下字符串的行:"GET/kiosk/kioskconf.txt HTTP/1.1"

为此我使用命令:

grep "GET /kiosk/kioskconf.txt HTTP/1.1"

效果很好。例如:

19x.25x.22x.5x - - [27/Apr/2015:14:15:50 +0200] "GET /kiosk/kioskconf.txt HTTP/1.1" 

有多行这样的内容,我想将每行开头的 IP 提取到一个文件中。我也不想在文件中有相同的 Ip。我用它来提取 ip,但它不完整。

sed -n 's/.*194\([^ ]*\).*/\1/p'

显示:

.25x.22x.5x

但我不会将整个 ip 和每个不同 ip 的一个实例放在一个文件中。

有人可以帮我解决这个问题吗?

最佳答案

听起来你应该使用 awk:

awk '/GET \/kiosk\/kioskconf\.txt HTTP\/1\.1/ && !seen[$1]++ { print $1 }' file

每当模式匹配但 IP 地址不在数组 seen 中时,这将打印第一个字段 $1。它还会增加 seen[$1] 的值,因此下次出现相同的 IP 时,条件的第二部分将为 false,并且不会打印该行。

/.在正则表达式模式中有特殊含义,必须转义。

关于linux - 脚本 shell : grep specific lines - extract specific strings - put them on a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29964701/

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