2011-11-30 36 views
9

Tôi muốn sử dụng "awk" hoặc "sed" để in tất cả các dòng bắt đầu bằng comm= từ tệp filex, Lưu ý rằng mỗi dòng chứa "comm = somthing"Tôi muốn sử dụng "awk" hoặc sed để in tất cả các dòng bắt đầu bằng "comm =" trong một tệp

for example : comm=rm , comm=ll, comm=ls .... 

Làm thế nào tôi có thể đạt được điều đó?

+0

Làm thế nào được thực hiện tập tin của bạn? một 'comm = rm' trên mỗi dòng? –

+0

có mỗi dòng, mỗi dòng chứa comm = x – wael

Trả lời

23

Đối với dòng bắt đầu bằng comm=

sed -n '/^comm=/p' filex 

awk '/^comm=/' filex 

Nếu comm= là bất cứ nơi nào trong dòng sau đó

sed -n '/comm=/p' filex 

awk '/comm=/' filex 
+0

mà chỉ hoạt động nó comm là ở đầu của dòng, làm thế nào để làm cho nó hoạt động nếu comm là ở bất kỳ vị trí trong mỗi dòng, cảm ơn bạn đã giúp đỡ Jay Jaypa – wael

+0

Chỉ cần loại bỏ các '^'biểu tượng. –

+0

điều này đang trả về toàn bộ dòng tôi chỉ muốn trả lại kết quả khớp, và đây là cách thực hiện: grep -o '\ ', cảm ơn sự giúp đỡ của bạn – wael

5

Bạn có thể sử dụng grep thêm:

grep comm= filex 

này sẽ hiển thị tất cả các dòng có chứa comm=.

+0

@Jaypal: đúng, sửa chữa và tôi đã lưu liên kết của bạn, cảm ơn;) –

+1

hoặc' grep "^ comm =" filex' để khớp với các dòng bắt đầu bằng 'comm ='? – vefthym

2

Dưới đây là một cách tiếp cận sử dụng grep:

grep -o '\<comm=[[:alnum:]]*\>' 

này đối xử với một từ là bao gồm các ký tự chữ và số; mở rộng lớp nhân vật nếu cần.

+0

cảm ơn Micheal này đang làm việc – wael

+2

@bob Cho rằng bạn đã nêu trong một nhận xét rằng nó chỉ là một 'comm =' trên mỗi dòng, giải pháp này là quá mức cần thiết; sử dụng câu trả lời từ Cédric Julien. Ngoài ra, để nói "cảm ơn" trên Stackoverflow, bạn có thể chỉ upvote câu trả lời hữu ích hơn là bình luận. –

0

Nếu grep là ok để sử dụng, bạn có thể cung cấp cho một cố gắng để:

grep -E "^comm=" file 
Các vấn đề liên quan