我有一个文本文件,其中列出了所有最近连接的地址。我运行了以下命令:
netstat -natu | grep 'ESTABLISHED' > temp.txt
然后我继续过滤文件中除 IP 之外的所有内容:
grep -oP '(\d{1,3}\.){1,3}\d{1,3}' temp.txt > IPs.txt
现在我想知道是否有办法在这个文本文件中找到一个特定的 IP,并且(如果可能)完全删除该行。基本上过滤掉本地主机地址(127.0.0.0),这样我只剩下外部地址。但我不确定我是否理解我应该如何做。
在此过程中,在某个地方过滤掉本地 IP 会更容易吗,或者只是将它们从生成的文本文件中过滤掉?
如果有人有任何想法,我很乐意听听。我对 grep 不太熟悉,但我正在慢慢学习……提前谢谢您。
答案1
外部地址已位于 netstat 输出的不同列中。grep -o
使用 awk 只打印外部 IP,而不是同时打印本地 IP 和外部 IP:
netstat -natu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 > IPs.txt
这也为您提供了从 netstat 中删除的选项,-n
以便您可以看到名称而不是 IP。
如果你想删除重复项,请将整个内容传输到sort -u
编辑:
为了回答标题中提出的实际问题,您可以使用以下命令删除文件中所有包含环回 IP 的行:
sed -i '/^127.0.0.1$/ d' temp.txt