如何在 ubuntu 中使用 grep 命令提取此文本中的第二个数字。
文件名 :结果.html?owner=12345
14219,98.2,31-s,19225
39219,92.7,31-s,29225
所需输出:
12345:98.2
12345:92.7
谢谢
答案1
使用 GNU grep
,您可以切换到 PCRE 模式,在该模式中您可以使用环视来匹配用逗号括起来的数字:
$ grep -HPo '(?<=,)[0-9.]*(?=,)' file
file:98.2
file:92.7
另一方面,如果你的数据以逗号分隔,更好的选择可能是 Awk:
$ awk -F, '{print FILENAME ":" $2}' file
file:98.2
file:92.7
或者在 perl 中同样如此perl -F, -nlE '{say "$ARGV:$F[1]"}' file
要在 Awk 中拆分文件名,您可以使用
$ awk -F, '{split(FILENAME,a,/=/); print a[2] ":" $2}' Results.html\?owner\=12345
12345:98.2
12345:92.7
或者(稍微更有效)如果你有 GNU Awk
gawk -F, 'BEGINFILE{split(FILENAME,a,/=/)} {print a[2] ":" $2}' Results.html\?owner\=12345
答案2
根据这个线,没有正确的方法可以使用RegEx
和来实现这一点grep
。
awk
根据您的情况,您可以使用或检索您提供的输入数据的第二列sed
。awk
下面是一个使用的示例:
#assuming test.dat contains your data
awk -F"," '{ print $2 }'
#assuming you want to read data from stdout
echo "14219,98.2,31-s,19225" | awk -F"," '{ print $2 }'