bash - 交换不同长度字符串中特定位置的字符

标签 bash sed character swap

我一直在尝试学习 sed,我在此处找到的示例用于将日期从 05082012 交换到 20120805,但我无法根据当前需要调整它们。

我需要将 IP 地址 10.4.13.22 转换为 22.13.4.10 的反向查找以用于 nsupdate 脚本。我最大的问题是有时每个八位字节都可以改变长度,例如10.4.13.2 和 10.19.8.126

感谢您的帮助!

echo 10.0.2.99 | sed 's/\(....\)\(....\)/\2\1/'

这是我目前尝试过的方法,只是基于这里的另一个问题,但是由于示例没有提供太多关于...的解释,所以我很难理解它的作用。

这是命令 .2.910.09 的输出,我期待 99.2.0.10

直接地,我想重新排列由“.”分隔的每个“部分”

最佳答案

“逆转”IPv4 地址的“暴力”方法是:

sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)/\4.\3.\2.\1/g'

或者,对于 GNU sed,

sed -r 's/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/\4.\3.\2.\1/g'

关于bash - 交换不同长度字符串中特定位置的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551917/

相关文章:

xcode 从字符串中删除最后一个字符

macos - 在 Mac OSX Lion 中,如何使用 sed 将多个空格替换为单个空格?

parsing - 为文件中的匹配行添加前缀

C# 获取两个相同字符之间的值

bash - 如何在 bash 脚本上匹配单个字符

bash if 子句与 and or 组合

bash - 比较同一目录中的文件

linux - 在 while 循环中隐藏子目录

linux - 分隔符范围线函数

javascript - 使用 Javascript 查找 Unicode 字符名称