So fügen Sie Zeilenumbrüche in PATTERN ein, wenn Sie fgrep / grep -F / grep --fixed-strings verwenden

7

Wenn Sie fgrep verwenden, sagt die Manpage, dass dies der Fall ist

Interpretieren Sie PATTERN als eine Liste fester Zeichenfolgen, die durch Zeilenumbrüche getrennt sind und mit denen alle übereinstimmen sollen.

Was ist in bash der richtige Weg, um Zeilenumbrüche in das PATTERN-Argument einzufügen (dh so, dass es mit einer der Zeilen gemäß der Manpage übereinstimmt)?

Ich habe Folgendes ohne Glück versucht:

fgrep word1\nword2
fgrep word1\rword2
fgrep "word1\nword2"
fgrep "word1\rword2"

Ich möchte, dass der Befehl möglichst in einer Zeile steht.

sa289
quelle

Antworten:

7

Dies kann mithilfe der $'\n'Syntax erfolgen (siehe https://stackoverflow.com/a/3182519/3822464 ). Also zum Beispiel:

fgrep word1$'\n'word2

Oder Sie können das gesamte MUSTER auf diese Weise einwickeln (credit don_crissti)

fgrep $'word1\nword2\nword3'
sa289
quelle
4
grep -F 'word1
word2' infile

oder, wenn Sie es in einer Zeile bevorzugen:

grep -F -e 'word1' -e 'word2' infile
don_crissti
quelle
Danke - das -eist eine gute alternative Lösung
sa289