0

输入文件:

vnic10
e1000g1
e1000g2
vnic10
blablabla888blablablabla999blabla

需要的输出:(只有每行中的数字)

10
1000 1
1000 2
10
888 999

我们可以使用 sed 和记忆模式来做到这一点。我正在寻找使用 awk/nawk 和 ksh 命令完成此操作的逻辑。

4

2 回答 2

2

不是最好的格式,但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
于 2011-05-25T20:48:32.920 回答
0

似乎是一项家庭作业,因为“我们可以使用 sed 来做到这一点”。实际上它是一个简单的替换命令,用空格替换任意数量的非数字字符。

sed -r "s/[^0-9]+/\ /g" input_file
于 2011-05-25T20:35:20.190 回答