Lệnh GREP trong LINUX
Mục lục:
- Cú pháp lệnh Grep
- Cách sử dụng
grepđể Tìm kiếm Chuỗi trong Tệp - Đảo ngược trận đấu (không bao gồm)
- Cách sử dụng Grep để tìm kiếm chuỗi trong đầu ra lệnh
- Tìm kiếm đệ quy
- Chỉ hiển thị tên tệp
- Tìm kiếm không nhạy cảm
- Tìm kiếm từ đầy đủ
- Hiển thị số dòng
- Đếm các trận đấu
- Tìm kiếm nhiều chuỗi (mẫu)
- Chế độ yên lặng
- Biểu thức chính quy cơ bản
- Biểu thức chính quy mở rộng
- In dòng trước trận đấu
- Dòng in sau một trận đấu
- Phần kết luận
Lệnh
grep
là viết tắt của cụm từ in biểu thức chính quy toàn cầu, là một trong những lệnh mạnh nhất và được sử dụng phổ biến nhất trong Linux.
Grep tìm kiếm một hoặc nhiều tệp đầu vào cho các dòng khớp với một mẫu nhất định và ghi từng dòng khớp vào đầu ra tiêu chuẩn. Nếu không có tệp nào được chỉ định,
grep
đọc từ đầu vào tiêu chuẩn, thường là đầu ra của lệnh khác.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng
grep
thông qua các ví dụ thực tế và giải thích chi tiết về các tùy chọn
grep
GNU phổ biến nhất.
Cú pháp lệnh Grep
Trước khi đi vào cách sử dụng
grep
, hãy bắt đầu bằng cách xem lại cú pháp cơ bản.
Các biểu thức tiện ích
grep
có dạng sau:
grep PATTERN
Các mục trong ngoặc vuông là tùy chọn.
-
OPTIONS- Không hoặc nhiều tùy chọn. Grep cung cấp một số tùy chọn kiểm soát hành vi của nó.PATTERN- Mẫu tìm kiếm.FILE- Không hoặc nhiều tên tệp đầu vào.
Để có thể tìm kiếm tệp, người dùng đang chạy lệnh phải có quyền truy cập đọc vào tệp.
Cách sử dụng
grep
để Tìm kiếm Chuỗi trong Tệp
Cách sử dụng cơ bản nhất của
grep
là tìm kiếm một chuỗi (văn bản) trong một tệp.
Ví dụ: để hiển thị các dòng từ tệp
/etc/passwd
có chứa chuỗi
bash
bạn có thể sử dụng lệnh sau:
grep bash /etc/passwd
Đầu ra sẽ trông giống như thế này:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Nếu chuỗi bao gồm khoảng trắng, bạn cần đặt nó trong dấu ngoặc kép đơn hoặc kép:
grep "Gnome Display Manager" /etc/passwd
Đảo ngược trận đấu (không bao gồm)
Để hiển thị các dòng không khớp với mẫu, sử dụng tùy chọn
-v
(hoặc
--invert-match
).
Ví dụ: để hiển thị các dòng từ tệp
/etc/passwd
không chứa chuỗi
nologin
bạn có thể sử dụng lệnh sau:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Cách sử dụng Grep để tìm kiếm chuỗi trong đầu ra lệnh
Thay vì chỉ định các tệp đầu vào, bạn có thể chuyển đầu ra của một lệnh khác sang
grep
, và sau đó chỉ hiển thị các dòng khớp với một mẫu nhất định.
Ví dụ: để tìm hiểu các quy trình đang chạy trên hệ thống của bạn dưới dạng
www-data
người dùng
www-data
bạn có thể sử dụng lệnh
ps
sau:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Bạn cũng có thể xâu chuỗi nhiều đường ống theo lệnh. Như bạn có thể thấy trong đầu ra ở trên, cũng có một dòng chứa quá trình
grep
. Nếu bạn không muốn dòng đó được hiển thị, hãy chuyển đầu ra sang một thể hiện
grep
khác như hiển thị bên dưới.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Tìm kiếm đệ quy
Để tìm kiếm đệ quy một mẫu, hãy sử dụng tùy chọn
-r
(hoặc
--recursive
). Điều này sẽ tìm kiếm thông qua tất cả các tệp trong thư mục được chỉ định, bỏ qua các liên kết tượng trưng được gặp đệ quy. Để theo tất cả các liên kết tượng trưng, sử dụng tùy chọn
-R
(hoặc
--dereference-recursive
).
Trong ví dụ sau, chúng tôi đang tìm kiếm chuỗi
linuxize.com
trong tất cả các tệp trong thư mục
/etc
:
grep -r linuxize.com /etc
Lệnh sẽ in các dòng khớp với tiền tố của đường dẫn đầy đủ đến tệp.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Nếu thay vào đó
-r
bạn sử dụng tùy chọn
-R
grep
sẽ theo tất cả các liên kết tượng trưng:
grep -R linuxize.com /etc
Lưu ý dòng cuối cùng của đầu ra. Dòng đó không được in trong ví dụ trên vì các tệp bên trong thư mục
sites-enabled
của Nginx là
sites-enabled
liên kết tượng trưng đến các tệp cấu hình bên trong thư mục
sites-available
của
sites-available
.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Chỉ hiển thị tên tệp
Để chặn đầu ra
grep
mặc định và chỉ in tên của các tệp chứa mẫu phù hợp, bạn có thể sử dụng tùy chọn
-l
(hoặc
--files-with-matches
).
Ví dụ: để tìm kiếm trong tất cả các tệp kết thúc bằng
.conf
trong thư mục làm việc hiện tại và chỉ in tên của các tệp chứa chuỗi
linuxize.com
:
grep -l linuxize.com *.conf
Đầu ra sẽ trông giống như thế này:
tmux.conf haproxy.conf
Tùy chọn
-l
thường được sử dụng kết hợp với tùy chọn đệ quy
-R
:
Tìm kiếm không nhạy cảm
Theo mặc định,
grep
biệt chữ hoa chữ thường. Điều này có nghĩa là các ký tự chữ hoa và chữ thường được coi là khác biệt.
Để bỏ qua trường hợp khi tìm kiếm, sử dụng tùy chọn
-i
(hoặc
--ignore-case
).
Ví dụ: khi tìm kiếm
Zebra
mà không có tùy chọn nào, lệnh sau sẽ không hiển thị bất kỳ đầu ra nào, tức là có các dòng khớp:
grep Zebra /usr/share/words
Nhưng nếu bạn thực hiện tìm kiếm không phân biệt chữ hoa chữ thường bằng tùy chọn
-i
, nó sẽ khớp cả chữ in hoa và chữ thường:
grep -i Zebra /usr/share/words
Xác định kiểu chữ nổi Zebra Zebra sẽ phù hợp với kiểu ngựa vằn, chữ ZEbrA, hoặc bất kỳ sự kết hợp nào khác của chữ in hoa và chữ thường cho chuỗi đó.
Tìm kiếm từ đầy đủ
Khi tìm kiếm trong các trò chơi điện tử,
grep
cũng sẽ in các dòng trong đó kiểu chữ gnu phạm được nhúng trong các từ lớn hơn, chẳng hạn như là cy cyusus hay hoặc Magn Magn.
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Để chỉ trả về những dòng có chuỗi được chỉ định là toàn bộ từ (được bao quanh bởi các ký tự không phải từ), hãy sử dụng tùy chọn
-w
(hoặc
--word-regexp
).
az
,
AZ
và
0-9
) và dấu gạch dưới (
_
). Tất cả các nhân vật khác được coi là nhân vật không từ.
grep -w gnu /usr/share/words
Hiển thị số dòng
Để hiển thị số lượng dòng chứa chuỗi khớp với mẫu, sử dụng tùy chọn
-n
(hoặc
--line-number
). Khi sử dụng tùy chọn này,
grep
sẽ in các kết quả khớp với đầu ra tiêu chuẩn có tiền tố với số dòng được tìm thấy trên đó.
Ví dụ: để hiển thị các dòng từ tệp
/etc/services
chứa chuỗi
bash
tiền tố với số dòng phù hợp, bạn có thể sử dụng lệnh sau:
grep -n 10000 /etc/services
Đầu ra bên dưới cho chúng ta thấy rằng các kết quả khớp được tìm thấy trên các dòng 10423 và 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Đếm các trận đấu
Để in một số dòng phù hợp với đầu ra tiêu chuẩn, sử dụng tùy chọn
-c
(hoặc
--count
).
Trong ví dụ dưới đây, chúng tôi đang đếm số tài khoản có
/usr/bin/zsh
làm vỏ.
grep -c '/usr/bin/zsh' /etc/passwd
Tìm kiếm nhiều chuỗi (mẫu)
Có thể tham gia hai hoặc nhiều mẫu tìm kiếm bằng toán tử OR
|
.
Theo mặc định,
grep
diễn giải mẫu như một biểu thức chính quy cơ bản trong đó các ký tự meta như
|
mất ý nghĩa đặc biệt của chúng, và các phiên bản gạch chéo của chúng phải được sử dụng.
Trong ví dụ dưới đây, chúng tôi đang tìm kiếm tất cả các lần xuất hiện của các từ
fatal
,
error
và
critical
trong tệp lỗi nhật ký Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Chế độ yên lặng
--quiet
(hoặc
--quiet
) bảo
grep
không ghi bất cứ điều gì vào thiết bị đầu cuối (đầu ra tiêu chuẩn). Nếu một kết quả khớp được tìm thấy, lệnh sẽ thoát với trạng thái
0
. Điều này hữu ích khi sử dụng
grep
trong shell script nơi bạn muốn kiểm tra xem một tệp có chứa chuỗi hay không và thực hiện một hành động nhất định tùy thuộc vào kết quả.
Dưới đây là một ví dụ về việc sử dụng
grep
trong chế độ im lặng làm lệnh kiểm tra trong câu lệnh if:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Biểu thức chính quy cơ bản
GNU Grep có hai bộ tính năng biểu thức chính quy, Cơ bản và Mở rộng. Theo mặc định,
grep
diễn giải mẫu như một biểu thức chính quy cơ bản.
Khi được sử dụng trong chế độ biểu thức chính quy cơ bản, tất cả các ký tự khác ngoại trừ các ký tự meta, thực sự là các biểu thức chính quy khớp với chính chúng. Dưới đây là danh sách các ký tự meta được sử dụng phổ biến nhất:
-
Sử dụng biểu tượng
^(dấu mũ) để khớp với biểu thức ở đầu một dòng. Trong ví dụ sau, chuỗi^kangaroosẽ chỉ khớp nếu nó xuất hiện ở đầu dòng.grep "^kangaroo" file.txtSử dụng ký hiệu
$(đô la) để khớp với biểu thức ở cuối dòng. Trong ví dụ sau, chuỗikangaroo$sẽ chỉ khớp nếu nó xuất hiện ở cuối dòng.grep "kangaroo$" file.txtSử dụng
.biểu tượng (dấu chấm) để khớp với bất kỳ ký tự đơn nào. Ví dụ: để khớp với bất cứ thứ gì bắt đầu bằngkanthì có hai ký tự và kết thúc bằng chuỗiroo, bạn có thể sử dụng mẫu sau:grep "kan..roo" file.txtSử dụng
(ngoặc) để khớp với bất kỳ ký tự đơn nào được đặt trong ngoặc. Ví dụ: tìm các dòng có chứa dấuaccepthoặcaccent, bạn có thể sử dụng mẫu sau:grep "accet" file.txtSử dụng
(ngoặc) để khớp với bất kỳ ký tự đơn nào được đặt trong ngoặc. Mẫu sau sẽ khớp với bất kỳ tổ hợp chuỗi nào có chứaco(any_letter_except_l)a, chẳng hạn nhưcoca,cobalt, v.v., nhưng sẽ không khớp với các dòng có chứacola,grep "coa" file.txt
Để thoát khỏi ý nghĩa đặc biệt của ký tự tiếp theo, hãy sử dụng biểu tượng
\
(dấu gạch chéo ngược).
Biểu thức chính quy mở rộng
Để diễn giải mẫu dưới dạng biểu thức chính quy mở rộng, hãy sử dụng tùy chọn
-E
(hoặc
--extended-regexp
). Các biểu thức chính quy mở rộng bao gồm tất cả các ký tự meta cơ bản, cùng với các ký tự meta bổ sung để tạo các mẫu tìm kiếm phức tạp và mạnh mẽ hơn. Dưới đây là một số ví dụ:
-
Khớp và trích xuất tất cả các địa chỉ email từ một tệp nhất định:
grep -E -o "\b+@+\.{2, 6}\b" file.txtKhớp và trích xuất tất cả các địa chỉ IP hợp lệ từ một tệp đã cho:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Tùy chọn
-o
được sử dụng để chỉ in chuỗi phù hợp.
In dòng trước trận đấu
Để in một số dòng cụ thể trước khi khớp dòng, sử dụng tùy chọn
-B
(hoặc
--before-context
).
Ví dụ: để hiển thị năm dòng ngữ cảnh hàng đầu trước khi khớp các dòng, bạn sẽ sử dụng lệnh sau:
Dòng in sau một trận đấu
Để in một số dòng cụ thể sau khi khớp các dòng, sử dụng tùy chọn
-A
(hoặc
--after-context
).
Ví dụ: để hiển thị năm dòng ngữ cảnh theo sau các dòng khớp, bạn sẽ sử dụng lệnh sau:
Phần kết luận
Lệnh
grep
cho phép bạn tìm kiếm một mẫu bên trong các tệp. Nếu khớp nếu tìm thấy, grep sẽ in các dòng chứa mẫu đã chỉ định.
Có nhiều hơn nữa để tìm hiểu về Grep tại trang Hướng dẫn sử dụng của Grep.
thiết bị đầu cuối grepKhông có gì để tính toán số lượng watt máy tính của bạn sẽ cần để hoạt động đúng. Bạn tổng cộng nhu cầu điện năng của bộ xử lý, bo mạch chủ, card video và âm thanh của bạn, và mọi thứ khác bên trong máy tính của bạn, với sức chứa của một bộ nguồn điện có giá phải chăng và bạn có nó. Tất nhiên, bạn phải biết nhu cầu điện năng của bộ xử lý, bo mạch chủ, card video và card âm thanh của bạn, và mọi thứ khác bên trong máy tính của bạn, nhưng cuộc sống là gì nếu không có những thách thức.
Trên thực tế, bạn không. Trang web của nhà sản xuất chắc chắn sẽ bao gồm những thông số kỹ thuật đó. Vì vậy, các trang web cho nhiều cửa hàng bán các đơn vị.
Trước iPhone đã đánh thức bạn dậy vào buổi sáng bằng đồng hồ báo thức, De la Vega nói, nó đã tải tất cả các nguồn tin tức hàng ngày của bạn lên điện thoại. Nó cũng đã gửi một tin nhắn không dây cho nhà sản xuất cà phê của bạn để có được cà phê đã sẵn sàng. Trong khi bạn đang ngồi uống cà phê, ông nói, bạn có thể quyết định rằng bạn muốn đọc tin tức của bạn trên màn hình TV; do đó, với một làn sóng của thiết bị đối với truyền hình, de la Vega nói, bạn sẽ gửi tin tức của bạn nguồn cấp dữ liệu khôn
[Xem thêm: Best NAS hộp cho phương tiện truyền thông streaming và sao lưu dự phòng]
CopyTrans cài đặt như một phần của CopyTrans Suite của WindSolutions, bao gồm một số ứng dụng khác nhau để quản lý các phần khác nhau trong trải nghiệm iOS của bạn. dưới dạng CopyTrans Contacts và CopyTrans Photo. Trong khi nó được gọi là một bộ, bạn mua các ứng dụng mà bạn muốn cá nhân. Tất cả các ứng dụng bao gồm một phiên bản demo miễn phí; bạn có thể thử bất kỳ thứ gì trong số họ và mua những thứ bạn thích. (Lưu ý rằng phiên bản miễn phí của CopyTrans giới hạn chuyển của bạn đến 100 bài hát.
CopyTrans cho phép bạn duyệt nội dung của thiết bị iOS, sắp xếp theo loại, thể loại, nghệ sĩ hoặc album.







