web-dev-qa-db-fra.com

Comment puis-je grep un morceau de texte à partir d'un fichier texte d'une ligne avec des délimiteurs

Je veux grepSTX= ....... jusqu'à son premier délimiteur ' et IRF= ..... jusqu'à son premier délimiteur '.

Comme:

:STX=ANAA:1+asdf+5060128703127:P'
IRF=16165193117+160624+160624 '
6
valera

Merci à @terdon et @jhilmer pour avoir rendu la citation nettement moins compliquée

Si vous voulez le '

$ grep -oE "(STX|IRF).*'" file 
STX=ANAA:1+asdf+5060128703127:P'
IRF=16165193117+160624+160624 '

Si vous ne voulez pas le '

$ grep -oE "(STX|IRF)[^']*"
STX=ANAA:1+asdf+5060128703127:P
IRF=16165193117+160624+160624

Explication

  • -o montre seulement la partie correspondante
  • -E utilise ERE afin que nous puissions utiliser | pour rechercher plusieurs modèles
  • " commencer à citer/arrêter de citer
  • (THIS|THAT) correspond à THIS ou THAT
  • .* correspond à un nombre quelconque de caractères
  • \' littéral '
  • [^']* n'importe quel nombre de caractères sauf '
10
Zanna