Linux命令从长字符串中打印一些字符

时间:2018-11-21 01:10:28

标签: linux ubuntu awk sed grep

我有一个名为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?

2 个答案:

答案 0 :(得分:0)

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语句将其打印出来。

答案 1 :(得分:0)

您要提取美元价值吗?

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