Có một hướng dẫn cơ bản cho grep, awk và sed? [đóng cửa]


95

Tôi đã là người dùng Linux được một thời gian và tôi hiểu khá rõ về hầu hết các tiện ích dòng lệnh phổ biến. Tuy nhiên, những người mà đi lên và lên một lần nữa liên quan đến lập trình là grep, awk, và sed.

Về điều duy nhất tôi đã sử dụng grep cho là đưa các công cụ vào đó để tìm các tệp trong tệp nhật ký, đầu ra của psvv. Tôi chưa sử dụng awkhoặc hoàn sedtoàn không sử dụng . Có bất kỳ hướng dẫn tốt cho các tiện ích này?



Tôi đã luôn ngừng học regex vì tôi tự nhủ rằng một ngày nào đó tôi sẽ học nó bằng cách đọc các bài báo gốc của Kleene về logic đã phát minh ra khái niệm này trước khi nó được sử dụng rộng rãi trong máy tính.
ixtmixilix

Tôi đồng ý với gvkv: nếu bạn cần phải học này, bạn cũng có thể tìm hiểu Perl, nó làm những gì grep, sedawklàm (và trong hầu hết các cách tương tự) và nhiều hơn nữa trên đầu trang.
Revierpost

Tôi luôn luôn thích thegeek ware.com. Họ cắt thẳng vào các ví dụ, trái ngược với mantrang thông thường có cảm giác giống như 90% chú thích.
đẳng cấu

Câu trả lời:



19

Cuốn sách O'Reilly sed and awk rất phù hợp với er sed và awk.


11

Tôi đã viết một cuốn sách về sed- Hướng dẫn dứt khoát cho sed sedthat bao gồm một hướng dẫn. Nó hoàn toàn bao phủ sed, cũng như các lệnh có liên quan như grep, tr, headtail. Cũng bao gồm đầy đủ các biểu thức thông thường tốt hơn nhiều so với tôi đã thấy ở nơi khác.

Tôi đồng ý với những người khác rằng việc hiểu rõ các biểu thức chính quy là rất quan trọng. Tôi cũng đồng ý rằng sedđược sử dụng tốt nhất cho các nhiệm vụ đơn giản hơn, các tập lệnh phức tạp hơn nhanh chóng bị che khuất.

Tôi không đồng ý rằng awkđã lỗi thời, chỉ ngược lại. Nó giống như nhiều thứ unix (ví dụ, vi), có một đường cong học tập, nhưng nó đáng giá.

Tôi không đồng ý với đề nghị sử dụng awkthay thế grep. Không có ý nghĩa trong kinh nghiệm của tôi. grepthật tuyệt vời và đơn giản


Tôi thứ hai grep- bạn không dùng máy kéo trên xa lộ nếu bạn có thể giúp nó. Và nó cũng là một cuốn sách khá hay - cảm ơn bạn.
mikeerv

3

Sách dạy nấu ăn thông thường được xuất bản bởi O'Rielly sẽ đủ để đưa bạn đến bất cứ nơi nào bằng bất kỳ ngôn ngữ nào sử dụng chúng.


3

Các tác giả của cuốn sách là Kernigan và Pike, tiêu đề giống như "Môi trường lập trình Unix".

Cuốn sách mà tôi thực sự học được có tên là "Giới thiệu về Berkely Unix".


2

Nếu bạn học một trong 3 điều này (grep, sed và awk), bạn chỉ có thể học awk / gawk. . awk có thể thực hiện các chức năng của grep và sed, tức là sử dụng regex để tìm kiếm / thay thế văn bản, cộng với nhiều hơn nữa vì đây cũng là ngôn ngữ lập trình. Nếu bạn tìm hiểu phần bên ngoài của gawk / awk, bạn sẽ không cần sử dụng grep / sed / wc / cut, v.v. Chỉ cần một công cụ thực hiện.


oh, btw, chúng tôi thậm chí không cần awk, bạn chỉ cần sử dụng g++ -x c++ - -o /tmp/prog && /tmp/progvà gõ các lệnh của bạn đi. Một công cụ để cai trị tất cả! :-)
Lie Ryan

1
Ai cần một trình biên dịch khi bạn chỉ có thể viết nhị phân thẳng vào một tệp? mèo sẽ làm, hoặc ed nếu bạn cảm thấy lười biếng.
cas

1

Theo tôi, awk ít nhiều đã lỗi thời (tuy nhiên, những người khác sẽ tranh luận mạnh mẽ về ý kiến ​​này), hầu hết mọi người tôi biết hiện nay thay vì sử dụng một số ngôn ngữ script như perl hoặc ngày nay thường dùng python để thao tác văn bản nâng cao. sed là tuyệt vời cho các tác vụ thao tác văn bản đơn giản hơn, tôi sử dụng nó mọi lúc. Tôi đã học được nó chủ yếu bằng cách xem sed one-liners giống như tại http://sed.sourceforge.net/sed1line.txt . Về grep: Về cơ bản, bạn muốn có được một sự hiểu biết vững chắc về các biểu thức thông thường (cũng cần thiết cho sed). Tôi ở đây chỉ sử dụng các hướng dẫn texinfo.


10
awk vẫn rất hữu ích cho việc thao tác dữ liệu được lấy từ các lệnh khác. Đối với việc sử dụng dòng lệnh đơn giản, tôi sẽ không coi nó là lỗi thời.
MaQleod

Ngoài ra, nó nên có sẵn trên nhiều hệ thống vì POSIX.
echox

1
Hầu hết 'AWK tiên tiến' có thể được thực hiện tốt hơn với perl hoặc python hoặc bất cứ điều gì, nhưng những thứ đơn giản là tốt để làm chỉ với awk.
user455

1
Awk vẫn hữu ích để biết để hiểu các câu trả lời khác nhau mà bạn có thể tìm thấy trực tuyến khi cố gắng giải quyết vấn đề. Bạn sẽ thường tìm thấy các ví dụ trực tuyến sử dụng các câu lệnh awk như thế nào awk '{print $3}'.
Steven D

1
Trong công việc, và ở nhà, tôi sử dụng awk thường xuyên hơn sau đó sed. Không có gì có thể đánh bại awk ở dữ liệu bảng cố định, như dpkg -lđầu ra. Tôi sẽ không làm bất cứ điều gì phức tạp từ xa trong đó, nhưng tôi sẽ thiếu một công cụ mà không cần. Tôi không thể nói tương tự đối với các ngôn ngữ lập trình tổng quát hơn, nhiều như tôi thích một số ngôn ngữ đó.
JM Becker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.