输入文件:
vnic10
e1000g1
e1000g2
vnic10
blablabla888blablablabla999blabla
需要的输出:(只有每行中的数字)
10
1000 1
1000 2
10
888 999
我们可以使用 sed 和记忆模式来做到这一点。我正在寻找使用 awk/nawk 和 ksh 命令完成此操作的逻辑。
不是最好的格式,但tr
可以完成工作
$ tr '[a-z]' ' ' < file_containing_input
10
1000 1
1000 2
10
888 999
使用 awk:
$ awk '{ gsub(/[a-z]+/, " "); print }' file_containing_input
10
1000 1
1000 2
10
888 999
还有一个 bash (现在我需要停下来......)
$ while read a; do echo ${a//[a-z]/ }; done < file_containing_input
10
1000 1
1000 2
10
888 999
似乎是一项家庭作业,因为“我们可以使用 sed 来做到这一点”。实际上它是一个简单的替换命令,用空格替换任意数量的非数字字符。
sed -r "s/[^0-9]+/\ /g" input_file