سؤال

How would I remove the first word from each line of text in a stream? i.e.

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

what I want is

$cat myfile | magiccommand 
text 1
text 2
text 3

How would I go about this using bash? I could use awk '{print $2 $3 $4 $5 ....}' but that's messy and would result in extra spaces for all null arguments. I was thinking that sed might be able to do this, but I could not find any examples of this. Any help is appreciated! Thanks!

هل كانت مفيدة؟

المحلول

based on your example text,

cut -d' ' -f2- yourFile

should do the job.

نصائح أخرى

That should work:

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

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

Here is a solution using awk

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

run this sed "s/^some\s//g" myfile you even don't need to use a pipe

To remove the first word, until space no matter how many spaces exist, use: sed 's/[^ ]* *//'

Example:

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

$ cat myfile | sed 's/[^ ]* *//'
text 1
text 2
text 3
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top