Trong Linux, có một số cách để xóa khoảng trắng trong văn bản. Trong bài viết này, tôi sẽ nói về awk và sed để thao tác văn bản trong Linux
Hãy bắt đầu với Sed
Sed là một tiện ích dòng lệnh tuyệt vời trong Linux. Có rất nhiều thứ bạn có thể làm với sed nhưng với mục đích của bài viết này, chúng ta sẽ chỉ nói về sed regex để xóa khoảng trắng trong chuỗi hoặc văn bản. Checkout tiện ích trực tuyến để xóa khoảng trắng. Ngoài ra, hãy kiểm tra sed tìm và thay thế cheatsheet bằng các ví dụ
Xóa khoảng trắng trong Bash bằng Sed
Hãy tạo một biến trong bash chứa chuỗi sau
text=" this is a test text to show how sed works to remove space"
Giả sử chúng ta muốn xóa tất cả các khoảng trắng trong văn bản trên bằng cách sử dụng sed
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace
Để giải thích ngắn gọn, chúng tôi đang lặp lại $text và chuyển sang sed. Trong sed, chúng tôi đang thay thế không gian không có gì "s/ //g". G cuối cùng có nghĩa là loại bỏ nó trên toàn cầu trên toàn bộ văn bản
Hãy nói rằng chúng tôi muốn xóa không gian hàng đầu bằng cách sử dụng sed
echo "$text" | sed 's/^ //g' this is a test text to show how sed works to remove space
sed s/^ / chỉ có nghĩa là không gian hàng đầu thay thế
Để xóa dấu cách bằng sed, hãy làm như sau
echo "$text" | sed 's/ \$//g' this is a test text to show how sed works to remove space
sed s/ $/ có nghĩa là dấu cách
Cách thay thế nhiều không gian bằng một không gian bằng Sed trong Linux
Để xóa nhiều khoảng trắng, hãy sử dụng [ ]+ trong sed. [ ]+ có nghĩa là khớp nhiều hơn một khoảng trắng. Hãy làm ví dụ tương tự bằng cách chèn thêm khoảng cách trong từ
text1="This is a test text to show how to remove multi spaces using sed in Linux" echo "$text1" | sed 's/[ ]\+/ /g' This is a test text to show how to remove multi spaces using sed in Linux
Lưu ý rằng chúng ta cần thoát ký tự đặc biệt + bằng dấu gạch chéo ngược trong khi [ ]+ trong sed
Cách thay thế nhiều khoảng trắng bằng một khoảng trắng cho mỗi dòng trong một tệp bằng Sed
Hãy tạo một tệp giả và vài dòng trong tệp đó
echo "this a first line with multiple spaces" > /tmp/test.txt echo "this a second line with multiple spaces" >> /tmp/test.txt
Hãy kiểm tra tập tin của chúng tôi
cat /tmp/test.txt this a first line with multiple spaces this a second line with multiple spaces
Ok chúng tôi có tập tin của chúng tôi. Giả sử chúng ta muốn thay thế nhiều khoảng trắng bằng một khoảng trắng bằng cùng một lệnh sed
cat /tmp/test.txt | sed 's/[ ]\+/ /g' this a first line with multiple spaces this a second line with multiple spaces
nó đã làm việc
Hãy nói rằng chúng tôi chỉ muốn sử dụng sed trên dòng thứ 2. Đã sử dụng sed '2s/[ ]+/ /g' để làm điều đó như hình bên dưới
________số 8Cách xóa khoảng trắng trong văn bản bằng AWK
Hãy lặp lại văn bản của chúng tôi một lần nữa
echo $text this is a test text to show how sed works to remove space Use awk gsub as shown below. echo "$text" | awk '{ gsub[/ /,""]; print }' thisisatesttexttoshowhowsedworkstoremovespace
Cách thay thế nhiều không gian bằng một không gian bằng Awk trong Linux
Chúng tôi sẽ sử dụng $text1 với nhiều khoảng trắng cho ví dụ này
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace0
Lưu ý rằng chúng tôi không cần thoát + vì nó không phải là ký tự đặc biệt trong awk gsub
Cách sử dụng Awk để thay thế nhiều khoảng trắng bằng một khoảng trắng cho mỗi dòng trong một tệp
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace1
Gói [lại
Bài đăng này tôi đã cố gắng đề cập đến hai tiện ích cơ bản awk và sed và chỉ ra cách sử dụng chúng để xóa khoảng trắng
Làm việc trong một bản phân phối hệ điều hành Linux mang đến cho bạn một góc nhìn rất độc đáo về mức độ thay đổi của thế giới máy tính. Chẳng hạn, việc loại bỏ các ký tự khoảng trắng trên tệp văn bản nghe có vẻ là một công việc tẻ nhạt trừ khi bạn đang sử dụng Linux làm hệ điều hành chính của mình
Khoảng trắng không chỉ nằm ngang như khoảng cách giữa các từ trong bài viết này hoặc các ký tự in được khác. Khoảng trắng cũng tồn tại dưới dạng khoảng cách dọc của các dòng và/hoặc đoạn văn. Vậy tại sao phải xóa khoảng trắng?
Tệp văn bản tham khảo
Xét tệp văn bản mẫu sau
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace2
Theo ảnh chụp màn hình ở trên, rõ ràng chúng ta có thể lưu ý rằng tệp văn bản hiển thị các triệu chứng của cả ký tự khoảng trắng dọc và ngang. Chúng ta có thể sử dụng lệnh cat cộng với tùy chọn
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace9 để mở tệp này ở chế độ xem được đánh số
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace3
Các ký tự khoảng trắng rõ ràng được hiển thị trên tệp văn bản bao gồm khoảng trắng, tab và ngắt dòng. Để xóa tất cả các ký tự khoảng trắng này, chúng tôi sẽ xem xét sự trợ giúp và sử dụng ba lệnh Linux sẵn có
Phương pháp 1. Sử dụng lệnh tr
Lệnh tr sẽ lấy tệp văn bản ở trên làm đầu vào, dịch nội dung của tệp văn bản, xóa các ký tự khoảng trắng và sau đó ghi lại vào tệp đầu ra ký tự không phải khoảng trắng
Tuy nhiên, chúng tôi cần cung cấp lệnh tr với các yêu cầu thực thi cụ thể i. e. xóa các ký tự khoảng trắng ngang, ký tự khoảng trắng dọc hay cả hai
Xóa các ký tự khoảng trắng ngang trong tệp
Chúng tôi sẽ sử dụng tùy chọn ký tự
echo "$text" | sed 's/^ //g' this is a test text to show how sed works to remove space0 như một phần của lệnh và sau đó thực hiện lệnh cat để in bố cục cuối cùng của tệp
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace4
Theo đầu ra ở trên, chúng tôi đã loại bỏ thành công các ký tự khoảng trắng ngang khỏi tệp văn bản trong Linux
Xóa tất cả các ký tự khoảng trắng trong tệp
Tùy chọn
echo "$text" | sed 's/^ //g' this is a test text to show how sed works to remove space1 được sử dụng để xóa cả ký tự khoảng trắng ngang và dọc khỏi tệp văn bản
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace5
Phương pháp 2. Sử dụng lệnh sed
Vì lệnh sed được triển khai phổ biến với các biểu thức chính quy nên chúng ta có thể sử dụng nó theo cách sau
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace6
Phương pháp 2. Sử dụng lệnh awk
Tiện ích xử lý văn bản mạnh mẽ này sử dụng tập lệnh giống như C của nó cũng như các hàm và biến tích hợp khác để thao tác xử lý văn bản một cách linh hoạt
Chúng tôi sẽ sử dụng chức năng gsub của nó theo cách sau để xóa các ký tự khoảng trắng nằm ngang
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace7
Để xóa tất cả các ký tự khoảng trắng khỏi tệp văn bản, chúng tôi sẽ thực hiện sửa đổi sau đối với lệnh trên
echo "$text" | sed 's/ //g' thisisatesttexttoshowhowsedworkstoremovespace8
Với ba cách tiếp cận lệnh Linux đã thảo luận ở trên, việc loại bỏ các ký tự khoảng trắng không mong muốn trên các tệp văn bản của bạn trong Linux sẽ không thành vấn đề