【发布时间】:2014-01-09 15:14:35
【问题描述】:
我有很多文本文件需要搜索一个字符串,然后返回后面的值。例如,我的文件可能如下所示:
text
text
text
a = 12 b = 14 String = 25
text
我想搜索“String”,然后返回 25。我尝试使用
grep -i "String" filename.out
但这给了我整条线。我找到了很多用于查找特定字符串的信息,但不是紧随其后的内容。提前谢谢你。
【问题讨论】:
我有很多文本文件需要搜索一个字符串,然后返回后面的值。例如,我的文件可能如下所示:
text
text
text
a = 12 b = 14 String = 25
text
我想搜索“String”,然后返回 25。我尝试使用
grep -i "String" filename.out
但这给了我整条线。我找到了很多用于查找特定字符串的信息,但不是紧随其后的内容。提前谢谢你。
【问题讨论】:
试试这个:
grep -iPo '\bstring\s*=\s*\K\S*'
【讨论】:
\s 和 \S 是什么?
\b 是什么意思,你就会知道这是有道理的。例如,想想OneString = 100 和String = 25,OP 想要 25 而不是 100。
你可以试试这个
grep -oi "String *= *[0-9]*" filename.out|grep -o "[0-9]*"
我认为有一些最性感的方式来实现;)
【讨论】:
这是awk的一种方法
awk -F "String =[ ]*" '/String/ {print $2}' filename.out
25
如果String后面可能有其他变量,使用这个:
awk -F "String =" '/String/ {split($2,a," ");print a[1]}' filename.out
25
【讨论】: