AWK 打印子网 0.69.100.in-abc.def
AWK to print subnet 0.69.100.in-abc.def
我的要求是将子网 100.69.0.0/10 值打印为 0.69.100.in-abc.def。
我试过如下
echo ['100.69.0.0/10'] | awk -F'.' '{print ".""."".in-abc.def."}'
但我得到了这样的输出
0.69.[100.in-abc.def.
如何使用 awk 获取如下输出
0.69.100.in-abc.def.
很好的尝试,你很接近,尝试跟随。使用 OP 的方法,我们也需要将 [
和 ]
作为字段分隔符,以便我们可以通过 OP 准确获取所需的值。
echo ['100.69.0.0/10'] |
awk -F"[].[']" 'BEGIN{OFS="."} {print ,,,"in-abc.def."}'
或者,如果您的 echo
正在打印 ['100.69.0.0/10']
,请尝试以下操作(我们有 [
、]
、.
、'
作为 awk
的字段分隔符):
echo "['100.69.0.0/10']" |
awk -F"[].[']" 'BEGIN{OFS="."} {print ,,,"in-abc.def."}'
OP 代码的改进(尝试): OP 仅添加了 .
作为字段分隔符以使事情变得简单我们也可以在字段分隔符中添加 [
和 ]
,以便我们可以获得确切需要的值。
注意: 第一个解决方案假设 OP 的回显输出是 [100.69.0.0/10]
我认为这可能是错误的,OP 的 echo
输出可能有 '
像 ['100.69.0.0/10']
(当使用 "
覆盖 echo
的输出时)在这种情况下请使用上面的第二个解决方案。
如何正确操作:
$ echo ['100.69.0.0/10'] |
awk '
match([=10=],/([0-9]{1,3}\.){3}[0-9]{1,3}/) { # match ip-ish looking string
split(substr([=10=],RSTART,RLENGTH),t,/\./) # split it on .
printf "%s.%s.%s.in-abc.def.\n",t[3],t[2],t[1] # printf it carefree
}'
输出
0.69.100.in-abc.def.
我的要求是将子网 100.69.0.0/10 值打印为 0.69.100.in-abc.def。 我试过如下
echo ['100.69.0.0/10'] | awk -F'.' '{print ".""."".in-abc.def."}'
但我得到了这样的输出
0.69.[100.in-abc.def.
如何使用 awk 获取如下输出
0.69.100.in-abc.def.
很好的尝试,你很接近,尝试跟随。使用 OP 的方法,我们也需要将 [
和 ]
作为字段分隔符,以便我们可以通过 OP 准确获取所需的值。
echo ['100.69.0.0/10'] |
awk -F"[].[']" 'BEGIN{OFS="."} {print ,,,"in-abc.def."}'
或者,如果您的 echo
正在打印 ['100.69.0.0/10']
,请尝试以下操作(我们有 [
、]
、.
、'
作为 awk
的字段分隔符):
echo "['100.69.0.0/10']" |
awk -F"[].[']" 'BEGIN{OFS="."} {print ,,,"in-abc.def."}'
OP 代码的改进(尝试): OP 仅添加了 .
作为字段分隔符以使事情变得简单我们也可以在字段分隔符中添加 [
和 ]
,以便我们可以获得确切需要的值。
注意: 第一个解决方案假设 OP 的回显输出是 [100.69.0.0/10]
我认为这可能是错误的,OP 的 echo
输出可能有 '
像 ['100.69.0.0/10']
(当使用 "
覆盖 echo
的输出时)在这种情况下请使用上面的第二个解决方案。
如何正确操作:
$ echo ['100.69.0.0/10'] |
awk '
match([=10=],/([0-9]{1,3}\.){3}[0-9]{1,3}/) { # match ip-ish looking string
split(substr([=10=],RSTART,RLENGTH),t,/\./) # split it on .
printf "%s.%s.%s.in-abc.def.\n",t[3],t[2],t[1] # printf it carefree
}'
输出
0.69.100.in-abc.def.