web-dev-qa-db-fra.com

Supprimer le premier mot du flux de texte

Comment supprimer le premier mot de chaque ligne de texte d'un flux? c'est à dire.

$cat myfile 
some text 1
some text 2
some text 3

ce que je veux c'est

$cat myfile | magiccommand 
text 1
text 2
text 3

Comment pourrais-je procéder à l'aide de bash? Je pourrais utiliser awk '{print $ 2 $ 3 $ 4 $ 5 ....}' mais c'est désordonné et entraînerait des espaces supplémentaires pour tous les arguments nuls. Je pensais que sed pourrait le faire, mais je n'ai trouvé aucun exemple de cela. Toute aide est appréciée! Merci!

27
Trcx

en fonction de votre exemple de texte,

cut -d' ' -f2- yourFile

devrait faire le travail.

63
Kent

Cela devrait fonctionner:

$ cat test.txt
some text 1
some text 2
some text 3

$ sed -e 's/^\w*\ *//' test.txt
text 1
text 2
text 3
12
Yanick Girouard

Voici une solution utilisant awk

awk '{$1= ""; print $0}' yourfile 
7
vk239

lance ça sed "s/^some\s//g" myfile vous n'avez même pas besoin d'utiliser un tuyau

5
user973254

Pour supprimer le premier mot, jusqu'à ce que l'espace, quel que soit le nombre d'espaces, utilisez: sed 's/[^ ]* *//'

Exemple:

$ cat myfile 
some text 1
some  text 2
some     text 3

$ cat myfile | sed 's/[^ ]* *//'
text 1
text 2
text 3
0
Benny