Các bản phân phối GNU/Linux bao gồm rất nhiều chương trình xử lý văn bản, hầu hết do GNU core utilities cung cấp. Có chút đường cong học tập, nhưng các tiện ích này có thể rất hữu ích và hiệu quả khi dùng đúng cách.
Dưới đây là 13 công cụ thao tác văn bản mạnh mẽ mà mọi người dùng dòng lệnh nên biết.
1. cat
Cat được thiết kế để concatenate (nối) file nhưng thường dùng để hiển thị một file đơn lẻ. Không có đối số, cat đọc standard input cho đến khi nhấn Ctrl + D (từ terminal hoặc từ đầu ra chương trình khác nếu dùng pipe). Standard input cũng có thể chỉ định rõ ràng với -.
Cat có một số tùy chọn hữu ích, nổi bật:
-Ain "$" ở cuối mỗi dòng và hiển thị ký tự không in được dùng ký hiệu caret.-nđánh số tất cả dòng.-bđánh số dòng không trống.-sgiảm chuỗi dòng trống thành một dòng trống đơn.
Trong ví dụ sau, chúng ta đang nối và đánh số nội dung file1, standard input, và file3.
cat -n file1 - file3
2. sort
Như tên gợi ý, sort sắp xếp nội dung file theo bảng chữ cái và số.
3. uniq
Uniq nhận một file đã sắp xếp và loại bỏ dòng trùng lặp. Nó thường được nối chuỗi với sort trong một lệnh đơn.
4. comm
Comm dùng để so sánh hai file đã sắp xếp, dòng theo dòng. Nó xuất ra ba cột: hai cột đầu chứa dòng duy nhất của file thứ nhất và thứ hai tương ứng, cột thứ ba hiển thị dòng tìm thấy trong cả hai file.
5. cut
Cut dùng để lấy các phần cụ thể của dòng, dựa trên ký tự, trường, hoặc byte. Nó có thể đọc từ file hoặc từ standard input nếu không chỉ định file.
Cắt theo vị trí ký tự
Tùy chọn -c chỉ định một vị trí ký tự đơn hoặc một hoặc nhiều phạm vi ký tự.
Ví dụ:
-c 3: ký tự thứ 3.-c 3-5: từ ký tự thứ 3 đến thứ 5.-c -5hoặc-c 1-5: từ ký tự thứ 1 đến thứ 5.-c 5-: từ ký tự thứ 5 đến cuối dòng.-c 3,5-7: ký tự thứ 3 và từ thứ 5 đến thứ 7.
Cắt theo trường
Các trường được phân tách bởi một delimiter gồm một ký tự đơn, được chỉ định với tùy chọn -d. Tùy chọn -f chọn vị trí trường hoặc một hoặc nhiều phạm vi trường dùng cùng định dạng như trên.
6. dos2unix
GNU/Linux và Unix thường kết thúc dòng văn bản bằng line feed (LF), trong khi Windows dùng carriage return và line feed (CRLF). Vấn đề tương thích có thể nảy sinh khi xử lý văn bản CRLF trên Linux, đó là nơi dos2unix xuất hiện. Nó chuyển đổi ký tự kết thúc CRLF thành LF.
Trong ví dụ sau, lệnh file được dùng để kiểm tra định dạng văn bản trước và sau khi dùng dos2unix.
7. fold
Để làm cho các dòng văn bản dài dễ đọc và xử lý hơn, bạn có thể dùng fold, nó wrap dòng về chiều rộng chỉ định.
Fold khớp chính xác chiều rộng chỉ định mặc định, ngắt từ khi cần thiết.
fold -w 30 longline.txt
Nếu ngắt từ không mong muốn, bạn có thể dùng tùy chọn -s để ngắt ở khoảng trắng.
fold -w 30 -s longline.txt
8. iconv
Công cụ này chuyển đổi văn bản từ encoding này sang encoding khác, rất hữu ích khi xử lý encoding lạ.
iconv -f input_encoding -t output_encoding -o output_file input_file
- "input_encoding" là encoding bạn chuyển đổi từ.
- "output_encoding" là encoding bạn chuyển đổi sang.
- "output_file" là tên file iconv sẽ lưu.
- "input_file" là tên file iconv sẽ đọc.
Lưu ý: bạn có thể liệt kê encoding có sẵn với iconv -l
9. sed
sed là một stream editor mạnh mẽ và linh hoạt, thường dùng để tìm và thay thế chuỗi với cú pháp sau.
Lệnh sau sẽ đọc từ file chỉ định (hoặc standard input), thay thế các phần văn bản khớp với pattern regular expression bằng chuỗi thay thế và xuất kết quả ra terminal.
sed s/pattern/replacement/g filename
Để sửa file gốc thay vì đó, bạn có thể dùng cờ -i.
10. wc
Tiện ích wc in ra số byte, ký tự, từ, hoặc dòng trong file.
11. split
Bạn có thể dùng split để chia file thành các file nhỏ hơn, theo số dòng, theo kích thước, hoặc thành một số file cụ thể.
Chia theo số dòng
split -l num_lines input_file output_prefix
Chia theo byte
split -b bytes input_file output_prefix
Chia thành số file cụ thể
split -n num_files input_file output_prefix
12. tac
Tac, là cat ngược, làm chính điều đó: nó hiển thị file với thứ tự dòng ngược lại.
13. tr
Công cụ tr dùng để dịch hoặc xóa tập hợp ký tự.
Một tập hợp ký tự thường là một chuỗi hoặc phạm vi ký tự. Ví dụ:
- "A-Z": tất cả chữ in hoa
- "a-z0-9": chữ thường và chữ số
- "\n[:punct:]": dòng mới và ký tự dấu câu
Tham khảo trang man tr để biết thêm chi tiết.
Để dịch một tập sang tập khác, dùng cú pháp:
tr SET1 SET2
Ví dụ, để thay chữ thường thành chữ hoa tương ứng, bạn có thể dùng:
tr "a-z" "A-Z"
Để xóa một tập ký tự, dùng cờ -d.
tr -d SET
Để xóa phần bù của một tập ký tự (tức là mọi thứ trừ tập đó), dùng -dc.
tr -dc SET
Kết Luận
Có rất nhiều thứ để học khi nói đến dòng lệnh Linux. Hy vọng các lệnh trên giúp bạn xử lý văn bản trên dòng lệnh tốt hơn.