1 votes

Comment puis-je faire en sorte que grep utilise CRLF (et non LF) comme nouvelle ligne ?

J'ai besoin de parcourir un fichier où non seulement les lignes sont terminées par un CRLF, mais où elles peuvent aussi contenir plusieurs LF. Comment puis-je faire en sorte que grep ignore les LF à moins qu'ils ne soient précédés d'un CR ? Pour information, j'utilise OS X, il serait donc utile d'avoir des instructions BSD pour grep.

2voto

Unnati Gutpa Points 11

Je ne vois aucun moyen de le faire en utilisant seulement grep mais vous pourriez utiliser perl par exemple,

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

ou vous pouvez utiliser tr comme un filtre autour de grep par exemple,

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

Ce dernier suppose que votre fichier ne contient pas déjà des NULs.

0voto

mug896 Points 131

Je pense que vous devez utiliser awk à la place.
awk a une variable RS (Records Seperator) pour changer le terminateur de ligne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X