【问题标题】:Linux command to print some characters from a long stringLinux命令从长字符串中打印一些字符
【发布时间】:2019-04-23 13:00:41
【问题描述】:

我有一个名为 text.txt 的文件,其中包含:

id="qwidget_lastsale" class="qwidget-dollar">$2020.22\div

我真的需要从那个文本文件中打印出2020.22这个词。

我使用了命令:

awk '{print $2}' text.txt | grep 2020.22

但我的输出会打印出来:

class="qwidget-dollar">$2020.22\dev

我可以使用哪个命令从该字符串中仅打印出 2020.22?

【问题讨论】:

  • 如果你只想要2020.22,为什么不echo 2020.22?既然这没有意义,那不是你想要的吗?如果文件中不存在2020.22 会发生什么?估计什么都没有。如果有多行包含2020.22 怎么办?由于.grep 的元字符,您是否会因为看到2020x22 而感到不安?

标签: linux ubuntu awk sed grep


【解决方案1】:
echo 'id="qwidget_lastsale" class="qwidget-dollar">$2020.22\div' | awk '{print gensub(/[^0-9.]+([0-9.]+).*/, "\\1","1", $2)}' 
2020.22

在 gensub 中,我们仅将 $2 的大部分内容替换为数字部分,然后使用 print 语句将其打印出来。

【讨论】:

    【解决方案2】:

    你想提取美元价值吗?

    $ grep -oP '(?<=\$)[0-9.]+' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      相关资源
      最近更新 更多