我正在开发一个shell脚本,该脚本将导出的Microsoft in-addr.apra.txt文件转换为更有用的格式,以便将来在其他产品中用于自动化目的。不,我在想一个(我不是程序员)不能用简单的方法解决的问题。
示例脚本

x=123.223.224
rev $x

给我
422.322.321

但我希望输出如下:
224.223.123

有没有一种简单的方法可以不用rev或将每组放入一个变量中?或者有我可以用的样品吗?或者我用错了工具?

最佳答案

为此使用awk
如果文本文件总是包含三个八位字节,只需使用.作为分隔符:

echo $x | awk -F. '{ print $3 "." $2 "." $1 }'

对于更复杂的情况,使用internalsplit()
echo $x | awk '{
    n = split($0, a, ".");
    for(i = n; i > 1; i--) {
        printf "%s.", a[i];
    }
     print a[1]; }'

在此示例中,split()将使用分隔符$0拆分每一行(作为参数传递),将结果数组保存到.并返回该数组的长度(保存到a)。注意不像C,
n数组索引以1开头。
split()
python -c "print '.'.join(reversed('$x'.split('.')))"

关于linux - Bash命令rev来反向定界符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29236358/

10-14 05:53