linux - 使用 sed 反向 IP 地址格式

标签 linux bash unix sed command-line-interface

我有一个 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/'

最佳答案

唯一的问题是您在模式中包含了一个 anchor $,它试图匹配每行的末尾但失败了。你只需要删除它:

$ sed -r 's/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/\4.\3.\2.\1/' file
192.168.1.1 example1.example1.net
192.168.1.2 example2.example2.net
192.168.1.3 example3.example3.net

请注意,我将文件名作为参数传递给 sed,从而避免无用地使用 cat。

关于linux - 使用 sed 反向 IP 地址格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32629768/

相关文章:

linux - Bash 命令根据添加日期每天归档文件

需要用于多行搜索的正则表达式(grep)

c++ - 如何在不使用 argv 和 argc 的情况下将总和值传递给 C++ 程序

python - 使用子进程 popen 运行列表命令字符串并获取输出

linux - Linux ubuntu自动为每个物理USB端口分配相同的安装点

linux - 使用 netcat 和 UDP 的反向 shell 不工作

bash - 遍历子目录并对某些文件执行 awk 脚本

linux - 在 Bash 脚本中使用 find 命令并排除子目录

linux - 将 find 和 md5sum 命令的结果保存到数组中以供进一步处理

bash - 简化高级 Bash 提示变量 (PS1) 代码