我正在尝试创建一个脚本来解析日志文件并查找每行特定部分的重复匹配项,如果存在重复项,我需要在与重复项匹配的第一行上执行脚本。我的日志详细信息是:
#: 177 101 User 1 Channel: SIP/101
#: 178 117 User 2 Channel: SIP/117
#: 179 150 User 3 Channel: SIP/150
#: 356 166 User 4 Channel: SIP/166
#: 387 117 User 2 Channel: SIP/117
我想根据日志文件的 SIP/部分查找重复项,但我需要根据日志文件的 # 部分执行脚本。根据此日志,我需要执行 #: 178 行的脚本。
到目前为止我已经使用
egrep -o ".{50}SIP.{4}"
根据线路的 SIP/部分查找重复项。我不清楚如何才能获得整行来获取 #: 178 并生成要执行的脚本。
最佳答案
一次性解决方案。它利用 uniq
支持跳过字段和仅重复标志
sed -n '/SIP/{s/^#:\s\+\([0-9]\+\).*SIP\/\([0-9]\+\)/\1 \2/;p}' file.txt | sort -k2,2 -n | uniq -f 1 -d | cut -f1 -d ' '
关于perl - 查找重复项并在匹配时执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754160/