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

Extracting a string from a string in linux

提取以下 OWNER 的值:

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

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

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

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

你可以使用这个 awk:

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

grep

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

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

试试这个。我用 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

也许这不是最优雅的方式,但可行。