J'ai un fichier html. Je souhaite supprimer toutes les lignes qui ne commencent pas par <tr>
.
J'ai essayé:
cat my_file | sed $'
s/^[^tr].*//
' | sed '/^$/d'
mais il a supprimé toutes les lignes.
text-processing
sed
Michael Durrant
la source
la source
grep
.s/^[^tr]...
correspond aux lignes qui commencent par n'importe quel caractère autre quet
our
. Les crochets sont une plage de caractères dans une expression régulière.Réponses:
Essayez ceci avec GNU sed:
ou
la source
!d
particulièrement utile car elle vous permet d'écrire une autre commande sed dans l'expression, tandis que lap
seule affiche la correspondance, mais la commande suivante a l'entrée non décochée.La partie entre
/
est une expression régulière. Lad
commande supprime les lignes correspondantes.Mise à jour: oups, désolé d'avoir vu que vous avez dit NON. Donc
Où
!
nie le sens du match.la source
Si cela doit être
sed
:-i
édite le fichier sur place,-n
empêchesed
d'imprimer toutes les lignes, l'expression régulière signifie faire correspondre toutes les lignes commençant par (^
)<tr>
et ces lignes seront imprimées (p
).Avec
grep
:Avec
-E
grep interprète les expressions régulières étendues.Avec
awk
:Ou pur
bash
:L'
[[
expression conditionnelle interne de is bashs. Nous comparons$l
avec l'expression régulière et si elle réussit (&&
) nous imprimons la ligne avececho
.la source
"$l"
. Et vous le mettez comme premier argument surecho
la ligne de commande de, donc vous aurez un problème s'il commence par un-option
. (Utilisezprintf '%s\n' "$l"). Also, shell
read` pour lire un octet à la fois, donc c'est super lent. Le traitement des fichiers texte en bash pur n'est généralement pas un bon choix sauf si vous savez que votre fichier est très petit.La réponse la plus simple et la plus simple serait:
Cela imprimera le fichier avec uniquement les lignes commençant par ce qui pourrait être bon si vous ne souhaitez pas modifier le fichier directement (comme avec sed).
Ensuite, si vous aimez ce que vous voyez dans la sortie, vous pouvez simplement imprimer dans un fichier avec
> file
Dans ce cas, vous gagnez du temps en sauvegardant votre fichier avant d'essayer certaines commandes.
la source