我将用一个例子来说明我的问题。假设我们有包含以下字符串的文件名“file.txt”:
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
我想使用 grep 来查找所有以“A”开头并以“YZ”结尾但在“A”和“YZ”之间不包含“YZ”的子字符串。所需的输出将是:
AooYoZooYZ
啊啊啊啊啊
我最好的猜测是执行以下操作:
$grep -E -o 'A[^(YZ)]*YZ' file.txt
但输出只有:
啊啊啊啊啊
我希望括号保留它们对 YZ 的含义,但我在 GNU grep 手册(http://www.gnu.org/software/grep/manual/grep.html)中读到:“大多数元字符丢失它们在括号表达式中的特殊含义。” 我也试过:
$grep -E -o 'A.*YZ 文件.txt
但这会输出整行:
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
有没有办法覆盖这个或另一种解决我的问题的方法?