【问题标题】:Search for a number in each line of a string in ksh and nawk在 ksh 和 nawk 中的字符串的每一行中搜索一个数字
【发布时间】:2011-09-02 02:00:05
【问题描述】:

输入文件:

vnic10
e1000g1
e1000g2
vnic10
blablabla888blablablabla999blabla

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

10
1000 1
1000 2
10
888 999

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

【问题讨论】:

    标签: string parsing awk ksh nawk


    【解决方案1】:

    不是最好的格式,但 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
    

    【讨论】:

    • 谢谢你。这是一种使用 tr 获取格式的方法: tr -s "[:alpha:]" "[ *]"
    【解决方案2】:

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

    sed -r "s/[^0-9]+/\ /g" input_file
    

    【讨论】:

    • 我不认为他们在我的工作场所做作业 .. .. 我希望至少不是 ..:)。我知道如何在 sed 中解决这个问题。你能用 awk/ksh 提出一些建议吗
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2013-01-18
    • 2020-08-30
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多