从linux中的字符串中提取字符串

时间:2015-01-08 18:49:41

标签: linux shell

在以下内容中提取OWNER的值:

{{USERID 9898}}{{OWNER Wayne, Daniel}}{{EMAIL danielwayne@blah.com}}

要获取此字符串,我在文本文件中使用grep。在所有其他情况下,每行只包含一个值,因此它们不是问题。 我的问题是在OWNER之后但在}}括号之前移除文本,只留下字符串' Wayne,Daniel'。

到目前为止,我已经开始考虑编写一个for循环来一次查看一个字符,但我觉得有一个更优雅的解决方案,然后我对unix的知识有限。

4 个答案:

答案 0 :(得分:3)

尝试cat file.txt | perl -n -e'/OWNER ([^\}]+)/ && print $1'

答案 1 :(得分:3)

你可以使用这个awk:

awk -F '{{|}}' '{sub(/OWNER +/, "", $4); print $4}' file
Wayne, Daniel

答案 2 :(得分:3)

使用grep

> cat file
{{USERID 9898}}{{OWNER Wayne, Daniel}}{{EMAIL danielwayne@blah.com}}

> grep -Po '(?<=OWNER )[\w, ]*' file
Wayne, Daniel

答案 3 :(得分:1)

试试这个。我用cut

INPUT="{{USERID 9898}}{{OWNER Wayne, Daniel}}{{EMAIL danielwayne@blah.com}}"
SUBSTRING=`echo $INPUT| cut -d' ' -f3`
SUBSTRING2=`echo $INPUT| cut -d',' -f2`
SUBSTRING2=`echo $SUBSTRING2| cut -d'}' -f1`
echo $SUBSTRING$SUBSTRING2

也许不是最优雅的方式,但有效。