Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 交换不同长度字符串中特定位置的字符_Bash_Sed_Character_Swap - Fatal编程技术网

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

Bash 交换不同长度字符串中特定位置的字符,bash,sed,character,swap,Bash,Sed,Character,Swap,我一直在尝试学习sed,我在这里找到的示例是从0508012到20120805的日期交换,我很难使它们适应我当前的需要 我需要将IP地址10.4.13.22转换为nsupdate脚本的反向查找22.13.4.10。我最大的问题是,有时每个八位字节都会改变长度,例如10.4.13.2和10.19.8.126 谢谢你的帮助 echo 10.0.2.99 | sed 's/\(....\)\(....\)/\2\1/' 这是我目前尝试的,只是基于这里的另一个问题,但是由于示例没有提供太多关于什么的解

我一直在尝试学习sed,我在这里找到的示例是从0508012到20120805的日期交换,我很难使它们适应我当前的需要

我需要将IP地址10.4.13.22转换为nsupdate脚本的反向查找22.13.4.10。我最大的问题是,有时每个八位字节都会改变长度,例如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地址的“bruteforce”方法是:

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'

您能提供一个简短的输入/输出示例吗?以及您当前的命令。你可以在你的帖子中添加信息。我更新了更多信息,这个案例所需的输出是<代码>99.2.0.10?是的,对不起,应该已经澄清了,已修复。谢谢,我知道[0-9]+如何允许不同的长度和\。指示分隔符和\4\3\2\1是按相反顺序重新排序的不同变量。非常优雅,你帮我理解了更多。祝你今天愉快@没问题:)如果你感兴趣,这里有几个链接:。