J'essaie d'extraire une ligne d'un fichier file.txt
qui ressemble à ceci:
>This is line 1.</li>
>This is line 2.</li>
>This is line 3.</li>
>This is line 4.</li>
J'ai besoin de récupérer du contenu qui commence par >
et se termine par </li>
afin que le résultat soit This is line 1.
This is line 2.
et ainsi de suite. J'ai examiné ceci dans le forum mais n'ai pas trouvé la solution. Cette solution n'a pas non plus fonctionné.
Je dois finalement aller chercher des lignes sur une page Web. Je vais donc commencer par curl webpage
et ensuite utiliser la commande grep pour grep cette ligne qui commence par >
et se termine par </li>
.
Merci.!
Cela devrait suffire:
grep '^>.*</li>$' input-file
Les ^
et $
permettent de s'assurer que ces parties sont ancrées au début et à la fin des lignes, respectivement.
Vous pouvez aussi faire:
grep -x '>.*</li>' input-file
-x
recherche une correspondance exacte: la ligne entière doit correspondre au modèle (ce qui implique que ^
et $
sont placés autour du modèle).
C'est le fichier d'entrée:
$ cat /tmp/tmp.txt
>This is line 1.</li>
invalid line 1
>This is line 2.</li>
>This is line 3.</li>
invalid line 2
>This is line 4.</li>
last invalid line
Utiliser grep
et awk
pour extraire les chaînes souhaitées:
$ cat /tmp/tmp.txt | grep -E '>*</li>' | awk -F\> '{ print $2 }' | awk -F\< '{ print $1 }'
This is line 1.
This is line 2.
This is line 3.
This is line 4.