Comment puis-je faire des outils comme grep
traiter les multilignes avec une barre oblique inverse comme une simple ligne?
Disons que j'ai des files qui ressemblent à ceci:
testvar=test1 \ test2 \ test3 othervar=oth1 \ oth2
Si je suis maintenant grep
pour testvar, il returnnera testvar=test1 \
, mais y a-t-il un moyen je peux le faire revenir testvar=test1 test2 test3
?
Plus ou less comment traiter ces lignes échappées multiples comme une seule ligne?
Note : Si cela ne peut pas être fait avec grep
, des conseils sur la façon de le faire avec d'autres outils comme sed
ou awk
pour get le même résultat sont également les bienvenus.
Avec awk
définissez le séparateur de champs et enregistrez les séparateurs dans votre cas d'utilisation:
awk 'BEGIN { FS="\n"; RS ="" } /testvar/' yourfile testvar=test1 \ test2 \ test3
Reportez-vous à l'input manuelle pour plusieurs loggings de ligne .
Vous pouvez le pré-traiter avec quelque chose qui rejoint ces lignes, comme:
awk 'match($0,/\\+$/) && RLENGTH % 2 { sub(/\\$/,""); printf "%s", $0; next } {print}' | grep ...