我正在开发一个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 }'
对于更复杂的情况,使用internal
split()
: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/