2011-10-18 10 views
21

Come rimuovere la prima parola da ogni riga di testo in un flusso? vale a direRimuovi la prima parola nel flusso di testo

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

quello che voglio è

$cat myfile | magiccommand 
text 1 
text 2 
text 3 

Come potrei andare su questo utilizzando bash? Potrei usare awk '{print $ 2 $ 3 $ 4 $ 5 ....}' ma questo è disordinato e darebbe luogo a spazi aggiuntivi per tutti gli argomenti nulli. Stavo pensando che sed potrebbe essere in grado di farlo, ma non ho trovato alcun esempio di questo. Qualsiasi aiuto è apprezzato! Grazie!

risposta

48

basa sul testo di esempio,

cut -d' ' -f2- yourFile 

dovrebbe fare il lavoro.

+0

Perfetto! Grazie. – Trcx

4

periodo questo sed "s/^some\s//g" myfile ancora non c'è bisogno di utilizzare un tubo

+0

Questo è ciò che stavo cercando ... cool – Satish

8

che dovrebbe funzionare:

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

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

Ecco una soluzione che utilizza awk

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

Per rimuovere la prima parola, fino a quando lo spazio non importa quanti spazi esiste, uso: sed 's/[^ ]* *//'

Esempio:

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

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