Question SED: Comment puis-je imprimer chaque ligne après la première instance de chaîne en utilisant Sed?


J'ai un fichier au format similaire ...

16:28 asdfasdf
16:29 4398upte
16:30 34liuthr
16:31 34tertio

Comment puis-je utiliser SED pour imprimer chaque ligne, y compris et après la ligne avec "16:30"?

Le résultat serait ...

16:30 34liuthr
16:31 34tertio

En ce moment, j'utilise sed comme suit, mais je dois trouver manuellement le numéro de ligne de la première ligne, par ex. "562697":

sed -n '562697,$p'

4
2018-03-06 22:42


origine




Réponses:


Adresses en sed peut être soit des numéros de ligne ou des modèles. Essaye ça:

sed -n '/16:30/,$p'

Si le motif contient un /, vous pouvez y échapper avec un \. Par exemple, pour rechercher 16/30 au lieu de 16:30, essaye ça:

sed -n '/16\/30/,$p'

7
2018-03-06 22:48



Et si j'avais besoin de chercher 16/30? Je ne suis pas sûr de savoir comment modifier la syntaxe dans ce cas. Merci! - barrrista
@barrrista J'ai édité ma réponse pour montrer comment échapper au personnage avec une barre oblique inverse. J'espère que cela t'aides. - Nicole Hamilton


Utilisez une expression régulière dans l'adresse:

sed -n '/^16:30/,$p'

ou

sed '/^16:30/,$!d'

5
2018-03-06 22:47