Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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:

  • -A in "$" ở 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.
  • -s giả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
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

2. sort

Như tên gợi ý, sort sắp xếp nội dung file theo bảng chữ cái và số.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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 -5 hoặ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.
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

10. wc

Tiện ích wc in ra số byte, ký tự, từ, hoặc dòng trong file.

13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

Chia theo byte

split -b bytes input_file output_prefix
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

Chia thành số file cụ thể

split -n num_files input_file output_prefix
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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"
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

Để xóa một tập ký tự, dùng cờ -d.

tr -d SET
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

Để 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
13 Công Cụ Hữu Ích Để Làm Việc Với Văn Bản Trên Dòng Lệnh

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.