使用 fgrep / grep -F / grep --fixed-strings 时如何在 PATTERN 中插入换行符

sa2*_*289 7 bash quoting newlines

使用 fgrep 时,手册页说它会

将 PATTERN 解释为由换行符分隔的固定字符串列表,其中任何一个都将被匹配。

在 bash 中,将换行符插入 PATTERN 参数的正确方法是什么(即,它会根据手册页匹配任何行)。

我试过以下没有运气:

fgrep word1\nword2
fgrep word1\rword2
fgrep "word1\nword2"
fgrep "word1\rword2"
Run Code Online (Sandbox Code Playgroud)

如果可能,我希望命令都在一行上。

sa2*_*289 7

这可以通过使用$'\n'语法来完成(参见/sf/answers/222776361/)。例如:

fgrep word1$'\n'word2
Run Code Online (Sandbox Code Playgroud)

或者你可以用这种方式包装整个 PATTERN(信用 don_crissti)

fgrep $'word1\nword2\nword3'
Run Code Online (Sandbox Code Playgroud)


don*_*sti 4

grep -F 'word1
word2' infile
Run Code Online (Sandbox Code Playgroud)

或者,如果您喜欢一行:

grep -F -e 'word1' -e 'word2' infile
Run Code Online (Sandbox Code Playgroud)