我无法弄清楚\
将该命令放在哪里。
grep "^D.*\(A1|A2|A3\)$" input.txt > output.txt
我正在搜索以 a 开头D
并以 A1、A2 或 A3 结尾的每一行,该行位于行末。
答案1
您需要转义管道 ( |
)。
$ grep "^D.*\(A1\|A2\|A3\)$" <(printf 'D%s\n' A1 A2 A3)
DA1
DA2
DA3
或者使用-E
扩展正则表达式的选项,那么您不需要转义任何内容。
$ grep -E "^D.*(A1|A2|A3)$" <(printf 'D%s\n' A1 A2 A3)
DA1
DA2
DA3
答案2
你只需要逃离或酒吧 - 你快到了:
grep "^D.*\(A1\|A2\|A3\)$"
请注意,您也可以使用 egrep 代替所有转义符:
egrep "^D.*(A1|A2|A3)$"
答案3
以下是使用选项和命令sed
组合的实现:-n
p
sed -rn '/^D.*(A1|A2|A3)$/p' in-file
sed -n '/^D.*\(A1\|A2\|A3\)$/p' in-file
sed -n '/^D.*A[1-3]$/p' in-file
选项
-r
,--regexp-extended
:在脚本中使用扩展正则表达式。选项
-n
,,--quiet
:--silent
抑制模式空间的自动打印。命令
p
:打印当前模式空间。