如何从UNIX中删除文件中的单词?

时间:2010-10-13 07:12:40

标签: linux unix

first file of information page
name/joe/salary1    50  10  2
name/don/miles2
                   20   4   3
name/sam/lb3        0   200 50

有人请告诉我如何删除上述文件中的所有单词,以便我的输出如下所示

    50  10  2

    20  4   3
    0   200 50

5 个答案:

答案 0 :(得分:2)

改用awk。以下代码说明要遍历每个字段,检查它是否为整数。如果是,请打印出来。不需要复杂的正则表达式。

$ awk '{for(i=1;i<=NF;i++) if($i+0==$i) {printf $i" "} print ""}'  file

50 10 2

20 4 3
0 200 50

答案 1 :(得分:1)

看起来您只想保留数字和空格。如果是,您可以这样做:

sed 's/[^0-9 ]//g' inputFile

编辑:要求更改,如果找到带有字母的数字,则应将其视为该字词的一部分。

这个Perl脚本可以做到:

perl -ne 's/(?:\d*[a-z\/]+\d*)*//g;print' input

答案 2 :(得分:1)

sed -e "s/[a-zA-Z/]/ /g" file

会这样做,但如果你想保留数字和空格,我更喜欢codaddict的方式。这样就可以去掉所有字母和'/'符号,用空格替换它们。

如果要修改文件,请传递-i开关。此命令将输出文件的外观。

答案 3 :(得分:0)

如果您的文件具有此结构,我建议先过滤掉第一行,然后从第一行开始删除所有字符:

sed -ni '2,$s/^[^ ]*//p' file

答案 4 :(得分:0)

删除每一行上的所有内容,直到第一个空格字符(也删除前导空格):

sed 's/\S*\s*//' file