格式化此grep的正确方法是什么?

1 command-line regex grep

我无法弄清楚\在此命令中放置 的位置。

grep "^D.*\(A1|A2|A3\)$" input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

我正在搜索以 a 开头D并以 A1、A2 或 A3 结尾的每一行,它们位于该行的末尾。

wja*_*rea 5

您需要逃离管道 ( |)。

$ grep "^D.*\(A1\|A2\|A3\)$" <(printf 'D%s\n' A1 A2 A3)
DA1
DA2
DA3
Run Code Online (Sandbox Code Playgroud)

或者使用-E扩展正则表达式的选项,那么你不需要逃避任何事情。

$ grep -E "^D.*(A1|A2|A3)$" <(printf 'D%s\n' A1 A2 A3)
DA1
DA2
DA3
Run Code Online (Sandbox Code Playgroud)