【发布时间】:2015-09-17 22:20:42
【问题描述】:
我有一个 txt 文件,其中包含针对域名的 IP 地址列表。例如;
1.1.168.192 example1.example1.net
2.1.168.192 example2.example2.net
3.1.168.192 example3.example3.net
.....
12.1.168.192 example12.example12.net
我无法让我的 sed 命令将输出更改为;
192.168.1.1 example1.example1.net
192.168.1.2 example2.example2.net
192.168.1.3 example3.example3.net
....
192.168.1.12 example12.example12.net
我使用的sed命令是
sed -r 's/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/\4.\3.\2.\1/'
把它当作
cat filename | sed -r 's/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/\4.\3.\2.\1/'
【问题讨论】:
-
您不应为此使用
cat。cat用于连接文件。使用sed -r '...' filename,或者如果命令只从标准输入读取,使用i/o重定向:command < filename -
在您的示例输入/输出中添加
...行对任何人都没有帮助,这只会让我们更难测试可能的解决方案(因为我们需要在复制后编辑您的文件以删除这些文件/paste 并且我们有时不确定这些是否应该被删除或者它们是否确实存在于您的真实输入文件中)所以请不要这样做。
标签: linux bash unix sed command-line-interface