我有一个包含 IP 和端口号的文件。我想去掉端口号并保留IP。
xyz 10.93.10.13:58160).
xyz 10.93.10.13:58161).
xyz 10.18.104.181:12466).
xyz 10.93.10.13:60585).
wxy 10.93.10.13:60586).
wxy 10.93.10.13:60587).
ADMIN loopback[127.0.0.1]:33955).
ADMIN loopback[127.0.0.1]:33957).
ADMIN loopback[127.0.0.1]:33961).
ADMIN loopback[127.0.0.1]:33962).
预期产出
xyz 10.93.10.13
xyz 10.93.10.13
xyz 10.18.104.181
xyz 10.93.10.13
wxy 10.93.10.13
wxy 10.93.10.13
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
我尝试了一个蹩脚的程序,但行不通
cat 1.txt|grep -v [:12312]
谢谢
答案1
首先,无用的使用cat
。其次,grep
仅搜索;它不会改变任何东西。你想要sed
这里:
$ sed -E 's/:[0-9]+.*/ /' input
xyz 10.93.10.13
xyz 10.93.10.13
xyz 10.18.104.181
xyz 10.93.10.13
wxy 10.93.10.13
wxy 10.93.10.13
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
ADMIN loopback[127.0.0.1]
答案2
sed 's/\(.*\):.*/\1/' filename
应该可以解决问题。匹配冒号之前的所有内容并在替换中返回它。