Wie kann ich erreichen, dass grep CRLF (und nicht LF) als Newline verwendet?

1955
Jason Baker

Ich muss durch eine Datei greifen, in der nicht nur Zeilen durch eine CRLF abgeschlossen werden, sondern sie kann auch mehrere LFs in jeder Zeile haben. Wie kann ich Grep dazu bringen, LFs zu ignorieren, es sei denn, eine CR ist vor ihnen? Zu Ihrer Information, ich verwende OS X, daher wäre es hilfreich, BSD-Grep-Anweisungen zu haben.

1

2 Antworten auf die Frage

2
garyjohn

Ich sehe keinen Weg, dies nur mit zu tun grep, aber Sie könnten perlzB

perl -e '$/="\r\n";' -ne 'print if /your_pattern/;' your_filename 

oder Sie könnten trals Filter verwenden grep, z. B.

tr '\n\r' '\0\n' < your_filename | grep -a your_pattern | tr '\0\n' '\n\r' 

Letzteres geht davon aus, dass Ihre Datei keine NULs enthält.

0
mug896

Ich denke, Sie müssen stattdessen awk verwenden.
awk hat die Variable RS (Records Seperator) zum Ändern des Leitungsabschlusszeichens