珀尔

珀尔

我有这个数据

photo for Kurtis Hardy" data-
photo for Paul Hoven" data-sr

我想过滤这个只得到中间的名字。我用这个命令来获取这些行

cat File| grep -E -o 'photo for.{0,20}'

答案1

这里不需要猫。让猫独自一人。

我假设每个名称都在“照片”之后开始,并以第一个“结束”,如您的示例所示。如果情况并非如此,请告诉我。否则我们将需要更多地考虑什么才算是“名称” 。

grep -E 'photo for [^"]{0,20}"' File | sed 's/photo for \([^"]\{0,20\}\)".*/\1/'

或者更简单:

sed -n 's/photo for \([^"]\{0,20\}\)".*/\1/p' File

答案2

珀尔

cat File | perl -nE'm/^photo for ([^"]+)/ && say $1'

或者

perl -nE'm/^photo for ([^"]+)/ && say $1' File

这会去除前缀photo for并捕获直到 的所有字符"

相关内容