csplit là một tiện ích dòng lệnh phổ biến của Linux được sử dụng để chia nội dung của file thành hai phần. File bạn cần thay đổi phải là file văn bản có phần mở rộng ".txt".
Lệnh này rất dễ sử dụng và hoạt động tốt trên tất cả các bản phân phối Linux. Với việc sử dụng các flag khác nhau có sẵn cho csplit, bạn cũng có thể sửa đổi đầu ra theo nhu cầu của mình.
Đây là cách sử dụng csplit để chia nhỏ file trên Linux.
Csplit là gì?
Được sử dụng trên Linux và các hệ điều hành tương tự Unix khác, csplit có thể chia file thành những file riêng lẻ được xác định bởi các dòng ngữ cảnh.
Cú pháp cơ bản của lệnh là:
csplit [OPTION] [PATTERN]
csplit và split khác gì nhau?
Hầu hết người dùng Linux thích sử dụng lệnh split khi chia file lớn thành nhiều file nhỏ hơn. Vấn đề với lệnh này là nó dựa vào kích thước byte hoặc kích thước dòng để phân chia các file.
Điều này không khả thi trong các tình huống mà bạn muốn chia file dựa trên nội dung thay vì kích thước của chúng. Đây là lúc csplit phát huy vai trò, vì nó chia file thành các phần có kích thước cố định dựa trên nội dung thay vì số byte.
Cách cài đặt csplit trên Linux
csplit được cài đặt sẵn trên hầu hết các bản phân phối Linux. Tuy nhiên, nếu bạn gặp lỗi “csplit: command not found", điều này có nghĩa là công cụ này chưa được cài đặt trên hệ thống của bạn. Để cài đặt csplit trên Ubuntu, hãy thực thi lệnh:
sudo apt-get install coreutils
Trên Arch Linux, hãy chạy:
sudo pacman -S coreutils
Để cài đặt csplit trên Fedora và RHEL:
sudo dnf install coreutils
Cách sử dụng csplit trên Linux
Để xem csplit hoạt động như thế nào, hãy tạo một file văn bản trên hệ thống của bạn. Sử dụng lệnh touch để tạo một file trống.
nano filename.txt
Khi bạn đã tạo file, hãy mở file đó bằng trình chỉnh sửa nano để sửa đổi nội dung của file.
nano filename.txt
Khi bạn đã thêm một số nội dung vào file, hãy nhấn Ctrl + X rồi nhấn Y để lưu và đóng file.
Để xác minh nội dung file bằng lệnh cat, hãy chạy:
cat filename
![Một file văn bản đang được tạo trên Ubuntu terminal](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-1.jpg)
Sử dụng lệnh csplit để tách file
Để hiểu csplit hoạt động như thế nào, trước tiên hãy xem nội dung của file đang được sử dụng ở đây làm ví dụ.
![Một file và nội dung của nó được hiển thị](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-2.jpg)
File chứa 9 dòng từ số 1 đến số 9. Nếu bạn phải chia file thành hai phần, làm thế nào bạn cho csplit biết nội dung nào sẽ gửi đến file đầu tiên và nội dung nào gửi sang file kia? Điều đó thật dễ dàng. Trong lệnh, bạn chỉ cần cho csplit biết bắt đầu chia từ dòng nào.
Điều này được thực hiện bằng cách chỉ định số dòng. Chẳng hạn, nếu bạn muốn tách file từ dòng thứ 3 có từ "London", bạn sẽ đề cập đến 3 trong lệnh. Hãy nhập lệnh như thế này:
csplit filename.txt 3
Lệnh này sẽ ngay lập tức chia file làm hai. Sử dụng lệnh ls để liệt kê tất cả nội dung thư mục để xem các file đầu ra. Bạn sẽ tìm thấy các file mới có tên xx00 và xx01 cùng với file gốc.
Sử dụng lệnh cat để xác minh nội dung của cả hai file.
![Ubuntu Terminal đã dùng lệnh csplit để chia nhỏ file](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-3.jpg)
Như bạn có thể thấy, csplit chia file thành hai phần, tính từ dòng thứ 3 như được chỉ định trong lệnh.
Các tùy chọn lệnh csplit
Dưới đây là một số tùy chọn dòng lệnh csplit mà bạn có thể sử dụng:
1. Thay đổi tiền tố cho file đầu ra
Còn được gọi là flag tiền tố, -f sửa đổi tiền tố trong tên file. Bạn có thể nhận thấy khi csplit tách file, các file mới được tạo có tiền tố xx trong tên file. Bạn có thể thay đổi điều đó bằng cách sử dụng flag -f trong lệnh.
Ví dụ, nếu bạn muốn tên file có abc làm tiền tố thay vì xx, hãy thực thi lệnh như sau:
csplit -f abc filename.txt 3
![Lệnh csplit được sử dụng với flag -f](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-4.jpg)
Có thể thấy, sau khi tách, cả hai file đều có tiền tố abc trong tên.
2. Giữ các file khi xảy ra lỗi
Tùy chọn -k hoặc --keep-files không xóa các file đầu ra nếu có lỗi trong lệnh csplit.
Đưa ra lệnh sau:
csplit -k randomfile.txt 2 {3}
![Lệnh csplit đã được sử dụng với tùy chọn k](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-5.jpg)
3. Sửa đổi số chữ số trong tên file
Sử dụng tùy chọn này, bạn có thể cho lệnh csplit biết bạn muốn xem bao nhiêu chữ số trong tên file theo sau tiền tố. Nó còn được gọi là flag chữ số.
Thực thi lệnh sau để chỉ giữ lại một chữ số trong tên file:
csplit -n 1 randomfile.txt 2
![Lệnh csplit đang được sử dụng với flag n](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-6.jpg)
Theo mặc định, không có flag -n, bạn sẽ thấy hai chữ số trong tên file.
4. Tách file mà không xuất kích thước
Flag -s âm thầm phân tách file mà không đề cập đến kích thước của file đầu ra.
csplit -s randomfile.txt 3
![Lệnh csplit đang được sử dụng với flag -s](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-7.jpg)
5. Xem trợ giúp dòng lệnh
Để xem chi tiết về tất cả các tùy chọn có sẵn cho csplit, hãy sử dụng flag -h hoặc --help trong lệnh.
csplit --help
![Lệnh csplit đang được sử dụng với flag -h](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-8.jpg)
6. Kiểm tra số phiên bản csplit
Để xem bạn đang sử dụng phiên bản csplit nào, hãy thực hiện lệnh với flag --version:
csplit --version
![Lệnh csplit đang được sử dụng với flag -v](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-9.jpg)
7. Bỏ qua một dòng cụ thể trong khi tách file
Bạn cũng có thể sử dụng tùy chọn dòng lệnh --suppress-matched để bỏ qua một dòng cụ thể khi chia nhỏ file.
csplit --suppress-matched filename.txt 5
Trong khi tách thành hai file, csplit sẽ bỏ qua dòng thứ 5 và tách file từ dòng tiếp theo.
![Bỏ qua một dòng cụ thể trong khi tách file](https://st.quantrimang.com/photos/image/2022/12/30/dung-lenh-csplit-chia-nho-file-tren-linux-10.jpg)
Dòng thứ 5 trong file gốc có từ "Berlin." Trong file đầu ra, "Berlin" đã bị bỏ qua.