grep là công cụ thiết yếu của sysadmin, tác dụng cơ bản là tìm một mẫu string trong 1 file text.
Cái tên grep bắt nguồn từ câu lệnh g/re/p của chương trình ed
> Its name comes from the ed command g/re/p (globally search for a regular expression and print matching lines)
Biết thêm một chút regex sẽ tăng thêm sức mạnh. Ví dụ in ra shell của các user trên máy:
$ grep -o '/bin/.*sh' /etc/passwd
/bin/bash
/bin/sh
Photo by Percy Pham on Unsplash |
Một "pattern" phổ biến là tìm số, nếu đã từng lập trình dùng regex, thì \d không còn lạ gì để tìm số - code Python ngay trên CLI:
$ echo '123ab45' | python3 -c '
> import re, sys
> print(re.findall("\d+", sys.stdin.read()))'
['123', '45']
Nhưng thật bất ngờ, grep trên Ubuntu 18.04 không hỗ trợ pattern này:
$ echo '123ab45' | grep -o '\d+'
# không in ra gì