Skip to main content

Posts

Showing posts with the label grep

grep không hỗ trợ \d và 3 mode regex trong grep

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ì 

Grep, SilverSearcher (ag), RipGrep (rg) và file ẩn

Trên *NIX, một file được gọi là file ẩn (hidden file) khi tên của nó bắt đầu với dấu chấm (.). Các file phổ biến thường gặp là các file để cấu hình các phần mềm, ví dụ: .vimrc .bashrc .gitignore .gitlabci,yml ... Image by OpenClipart-Vectors from Pixabay Khi muốn tìm một từ khóa bất kỳ trong các file ở thư mục hiện tại, ta có thể dùng grep: grep -Rin noi_dung .  # dấu chấm đại diện cho thư mục hiện tại $ mkdir testdir; echo pika > testdir/.filepassword $ cd testdir/ $ grep -Rin pika . ./.filepassword:1:pika Một nhược điểm của grep so với các chương trình "hiện đại" hơn như SilverSearcher (ag) hay RipGrep (rg) là

ag và tìm hoài không thấy

Nếu bạn chưa biết ag là gì thì hãy đọc ngay t ại đây vì ag có một sức mạnh kinh hoàng mà chỉ cần một lần thử, bạn sẽ tin. ag giúp tìm kiếm từ khoá nhanh hơn grep nhiều lần, câu lệnh ngắn hơn vài lần, và đôi khi nó còn tỏ ra thông minh một cách đáng sợ nữa. Ví dụ dưới đây trình bày một trường hợp nếu ag trong thư mục con ``cmd`` thì tìm thấy kết quả còn nếu ag từ thư mục parent thì lại không thấy gì: src/github.com/syncthing/syncthing/cmd $ ag cert.pem syncthing/locations.go 47:     locCertFile:      "${config}/cert.pem", 49:     locHTTPSCertFile: "${config}/https-cert.pem", syncthing/main.go 376:    certFile, keyFile := filepath.Join(dir, "cert.pem"), filepath.Join(dir, "key.pem") Thấy kết quả trong file syncthing/main.go Giờ chuyển đến thư mục parent:

ag và grep

grep là công cụ không thể thiếu với một *NIX-command line user. grep là lệnh mà người ta gõ khi cần tìm một process trong output của lệnh ps, hay tìm xem file code nào chứa một từ khoá cho trước... grep có mặt trên mọi hệ điều hành *NIX: linux-based (ubuntu, redhad...), freebsd, openbsd, OSX... chắc chỉ trên Windows mặc định mới không có grep . Tính phổ biến gần như thống trị này khiến vị thế của grep giống như bash , không nhanh nhất, không mạnh nhất, nhưng vẫn được dùng nhiều nhất. Nhưng... không thể thay thế được, không có nghĩa là không làm. Nếu chỉ có một con chim hót hay nhất hót, thì cả khu rừng sẽ rất im lặng. [1] ag - the silver seacher ( ag là ký hiệu hoá học của bạc - thống nhất đọc 2 chữ cái là "ây gi"), là một util nhằm thay thế  ``grep``: $ whatis ag ag (1)               - The Silver Searcher. Like ack , but faster. ag sẵn sàng lên tivi quảng cáo: với tốc độ search nhanh hơn (th...

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG