2011-10-18 39 views
21

Làm cách nào để xóa từ đầu tiên khỏi mỗi dòng văn bản trong luồng? ví dụ:Xóa từ đầu tiên trong luồng văn bản

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

những gì tôi muốn là

$cat myfile | magiccommand 
text 1 
text 2 
text 3 

Làm thế nào tôi sẽ đi về điều này sử dụng bash? Tôi có thể sử dụng awk '{print $ 2 $ 3 $ 4 $ 5 ....}' nhưng đó là lộn xộn và sẽ dẫn đến không gian thêm cho tất cả các đối số null. Tôi đã nghĩ rằng sed có thể làm được điều này, nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về điều này. Bất kỳ trợ giúp được đánh giá cao! Cảm ơn!

Trả lời

48

dựa trên ví dụ văn bản của bạn,

cut -d' ' -f2- yourFile 

nên thực hiện công việc.

+0

Hoàn hảo! Cảm ơn bạn. – Trcx

4

chạy sed "s/^some\s//g" myfile này, bạn thậm chí không cần phải sử dụng một ống

+0

Đây là những gì tôi đang tìm kiếm ... cool – Satish

8

Nên hoạt động:

$ 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

Đây là một giải pháp sử dụng awk

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

Để loại bỏ từ đầu tiên, cho đến khi không gian dù có bao nhiêu không gian tồn tại, sử dụng: sed 's/[^ ]* *//'

Ví dụ:

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

$ cat myfile | sed 's/[^ ]* *//' 
text 1 
text 2 
text 3 
Các vấn đề liên quan