12 ví dụ lệnh grep trong CentOS / Ubuntu / Debian / Fedora
$ sudo apt install grep [On Debian, Ubuntu and Mint] $ sudo yum install grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/grep [On Gentoo Linux] $ sudo apk add grep [On Alpine Linux] $ sudo pacman -S grep [On Arch Linux] $ sudo zypper install grep [On OpenSUSE]
Để có thể vận dụng thành thục lệnh grep trong Linux bạn cần thực hành và vận dụng nhiều. Hãy cùng đến với 12 ví dụ điển hình sau nhé.
12 ứng dụng của lệnh grep trong Linux
Tìm kiếm và tìm tệp tin
Giả sử bạn vừa cài đặt một bản sao mới của Ubuntu trên máy tính của bạn và bạn muốn thử viết kịch bản Python.
Bạn đã tìm kiếm trên web nhưng bạn nhận thấy có hai phiên bản Python khác nhau được sử dụng và bạn không biết phiên bản Python nào được cài đặt trên Ubuntu bởi trình cài đặt, hoặc liệu nó đã cài đặt các module nào hay chưa.
Đơn giản chỉ cần chạy lệnh dpkg sau đây với grep như được hiển thị:
# dpkg -l | grep -i python
Tìm tệp tin bằng lệnh grep:
ii libpython3-stdlib:amd64 3.8.2-0ubuntu2 amd64 interactive high-level object-oriented language (default python3 version) ii libpython3.8:amd64 3.8.10-0ubuntu1~20.04.5 amd64 Shared Python runtime library (version 3.8) ii libpython3.8-minimal:amd64 3.8.10-0ubuntu1~20.04.5 amd64 Minimal subset of the Python language (version 3.8) ii libpython3.8-stdlib:amd64 3.8.10-0ubuntu1~20.04.5 amd64 Interactive high-level object-oriented language (standard library, version 3.8) ii python-apt-common 2.0.0ubuntu0.20.04.8 all Python interface to libapt-pkg (locales) ii python3 3.8.2-0ubuntu2 amd64 interactive high-level object-oriented language (default python3 version) ii python3-apport 2.20.11-0ubuntu27.24 all Python 3 library for Apport crash report handling ii python3-apt 2.0.0ubuntu0.20.04.8 amd64 Python 3 interface to libapt-pkg ii python3-aptdaemon 1.1.1+bzr982-0ubuntu32.3 all Python 3 modules for the server and client of aptdaemon ii python3-aptdaemon.gtk3widgets 1.1.1+bzr982-0ubuntu32.3 all Python 3 GTK+ 3 widgets to run an aptdaemon client ii python3-blinker 1.4+dfsg1-0.3ubuntu1 all fast, simple object-to-object and broadcast signaling library ii python3-brlapi:amd64 6.0+dfsg-4ubuntu6 amd64 Braille display access via BRLTTY - Python3 bindings
Trước tiên, chúng ta chạy dpkg -l, lệnh này liệt kê các gói *.deb đã được cài đặt trên hệ thống của bạn. Tiếp theo, chúng ta chuyển dữ liệu đầu ra đến grep -i python, điều này đơn giản chỉ định "đi đến grep và lọc và trả về mọi thứ có chứa 'python'".
Tùy chọn -i được sử dụng để bỏ qua việc phân biệt chữ hoa chữ thường, vì grep phân biệt chữ hoa chữ thường. Sử dụng tùy chọn -i là một thói quen tốt, trừ khi bạn đang cố gắng tìm kiếm cụ thể hơn.
Tìm kiếm và lọc tệp
Lệnh grep trong Linux cũng có thể được sử dụng để tìm kiếm và lọc trong các tệp tin riêng lẻ hoặc nhiều tệp tin. Bạn đang gặp một số vấn đề với máy chủ web Apache của mình và bạn đã liên hệ với một diễn đàn tuyệt vời trên mạng để xin trợ giúp.
Người bạn tốt bụng trả lời bạn đã yêu cầu bạn đăng nội dung của tệp /etc/apache2/apache2.conf. Điều này sẽ dễ dàng hơn cho bạn, người đang giúp bạn và tất cả mọi người đang đọc nếu bạn có thể loại bỏ tất cả các dòng chú thích phải không? Bạn hoàn toàn có thể làm điều đó! Chỉ cần chạy lệnh sau:
# grep -v ^\# /etc/apache2/apache2.conf | grep .
Tùy chọn -v cho biết cho grep làm ngược lại đầu ra của nó, có nghĩa là thay vì in ra các dòng khớp, nó sẽ in ra tất cả các dòng không khớp với biểu thức, trong trường hợp này là các dòng được chú thích bằng dấu #.
Lưu ý rằng chúng tôi cũng sử dụng grep . ở cuối để ẩn đầu ra của tất cả các dòng trống. Điều này giúp chúng tôi chỉ nhìn thấy các cài đặt cấu hình trong cửa sổ terminal. In nội dung tệp bằng cách loại trừ nhận xét và dòng trống:
DefaultRuntimeDir ${APACHE_RUN_DIR} PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory>
Tìm tất cả các tệp .mp3
Các lệnh grep có thể rất hữu ích để lọc từ đầu ra chuẩn (stdout). Ví dụ, giả sử bạn có một thư mục chứa nhiều tệp âm nhạc trong nhiều định dạng khác nhau.
Bạn muốn tìm tất cả các tệp *.mp3 từ nghệ sĩ JayZ, nhưng không muốn có bất kỳ bản remix nào. Sử dụng lệnh find với một vài ống grep sẽ giải quyết được vấn đề này.
# find . –name “*.mp3” | grep –i JayZ | grep –vi “remix”
Trong ví dụ này, chúng ta sử dụng lệnh find để in ra tất cả các tệp có phần mở rộng *.mp3, sau đó đưa kết quả đó qua ống grep -i để lọc và in ra tất cả các tệp có tên là "JayZ", và tiếp theo là ống grep -vi để lọc và không in ra tất cả các tên tệp chứa chuỗi (bất kể chữ hoa chữ thường) "remix".
Hiển thị số dòng trước hoặc sau chuỗi tìm kiếm
Một cặp tùy chọn khác là -A và -B, cho phép hiển thị dòng chứa chuỗi tìm kiếm và số dòng trước hoặc sau chuỗi tìm kiếm.
Để dễ nhớ, bạn hãy mặc định –A= after và –B= before:
# ifconfig | grep -A 4 inet # ifconfig | grep -B 2 UP
In số dòng trước và sau chuỗi
Hiển thị số dòng trước và sau chuỗi tìm kiếm
Tùy chọn -C (hoặc --context) trong lệnh grep tương tự, nhưng thay vì in ra các dòng trước hoặc sau chuỗi tìm kiếm, nó in ra các dòng trong cả hai hướng.
# ifconfig | grep -C 2 lo TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 15314 bytes 1593769 (1.5 MB) RX errors 0 dropped 0 overruns 0 frame 0
Đếm số lần xuất hiện của các kết quả tìm kiếm (matches)
Tương tự như việc sử dụng ống nối (pipe) để đưa chuỗi tìm kiếm của grep vào lệnh word count (wc), grep cung cấp một tùy chọn tích hợp để thực hiện công việc tương tự.
# ifconfig | grep -c inet6
Tìm kiếm các tệp tin theo chuỗi đã cho trong Linux
Tùy chọn -n của lệnh grep trong Linux rất hữu ích khi gỡ lỗi các tệp tin trong quá trình biên dịch. Nó hiển thị số dòng trong tệp tin của chuỗi tìm kiếm đã cho. Dưới đây là ví dụ về cách sử dụng tùy chọn -n trong lệnh grep:
# grep -n "main" setup.py
Tìm kiếm một chuỗi trong tất cả các thư mục và các tệp tin con một cách đệ quy
Nếu bạn muốn tìm kiếm một chuỗi trong thư mục hiện tại cùng với tất cả các thư mục con, bạn có thể sử dụng tùy chọn -r để tìm kiếm đệ quy. Dưới đây là cú pháp của lệnh:
# grep -r “function” *
Tìm kiếm một mẫu hoàn chỉnh (toàn bộ pattern)
Sử dụng tùy chọn -w trong lệnh grep sẽ tìm kiếm toàn bộ mẫu (pattern) trong chuỗi. Ví dụ, sử dụng:
# ifconfig | grep -w "RUNNING"
Sẽ in ra dòng chứa mẫu (pattern) được đặt trong dấu nháy kép. Tuy nhiên, nếu bạn thử:
# ifconfig | grep -w "RUN"
Tìm toàn bộ mẫu
Không có gì được trả về vì chúng ta không tìm kiếm một mẫu (pattern), mà là một từ hoàn chỉnh.
Tìm kiếm một chuỗi trong các tệp được nén gzip (.gz)
Một công cụ quan trọng là zgrep, tương tự như zcat, được sử dụng trên các tệp được nén gzip. Nó sử dụng các tùy chọn tương tự như grep và được sử dụng theo cách tương tự. Ví dụ:
# zgrep -i error /var/log/syslog.2.gz
Chuỗi tìm kiếm trong tệp Gzipped
Tìm kiếm và khớp các biểu thức chính quy trong các tệp
Lệnh egrep là một phần mở rộng khác của grep và có ý nghĩa là "Extended Global Regular Expression". Nó nhận biết các meta-kí tự bổ sung trong biểu thức chính quy như + ? | và ().
egrep rất hữu ích khi tìm kiếm trong các tệp nguồn và các đoạn mã khác khi cần thiết. Nó có thể được gọi từ lệnh grep thông thường bằng cách chỉ định tùy chọn -E.
# grep -E
Tìm kiếm chuỗi mẫu cố định
Lệnh fgrep tìm kiếm một chuỗi mẫu cố định trong một tệp hoặc danh sách tệp. Nó tương đương với grep -F. Một cách thông thường để sử dụng fgrep là chuyển một tệp chứa các mẫu cho nó.
# fgrep –f file_full_of_patterns.txt file_to_search.txt
Điều này chỉ là một điểm khởi đầu với lệnh grep trong Linux, nhưng như bạn đã nhìn thấy, nó vô giá trị cho nhiều mục đích khác nhau. Ngoài các lệnh đơn giản một dòng mà chúng ta đã triển khai, grep có thể được sử dụng để viết các tác vụ cron mạnh mẽ và các kịch bản shell.
Mọi người cũng tìm kiếm: grep, grep ubuntu, lệnh grep trong linux, bạn đã biết cách sử dụng lệnh grep trong linux hay chưa mobiwork, ubuntu grep, grep trong linux, grep linux
Mọi người cùng tìm kiếm: bạn đã biết cách sử dụng lệnh grep trong linux hay chưa mobiwork, grep centos, grep debian