Làm cách nào để xóa khoảng trắng khỏi đầu ra trong Linux?

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ố 8

Cá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'
thisisatesttexttoshowhowsedworkstoremovespace
0

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'
thisisatesttexttoshowhowsedworkstoremovespace
1

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'
thisisatesttexttoshowhowsedworkstoremovespace
2
Tệp có khoảng trắng

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'
thisisatesttexttoshowhowsedworkstoremovespace
9 để mở tệp này ở chế độ xem được đánh số

echo "$text" | sed 's/ //g'
thisisatesttexttoshowhowsedworkstoremovespace
3
Xem tệp có số

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 space
0 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'
thisisatesttexttoshowhowsedworkstoremovespace
4
Xóa các ký tự khoảng trắng ngang trong tệp

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 space
1 đượ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'
thisisatesttexttoshowhowsedworkstoremovespace
5
Xóa các ký tự khoảng trắng trong tệp

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'
thisisatesttexttoshowhowsedworkstoremovespace
6
Xóa ký tự khoảng trắng trong lệnh Sed

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'
thisisatesttexttoshowhowsedworkstoremovespace
7
Xóa ký tự khoảng trắng trong lệnh Awk

Để 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'
thisisatesttexttoshowhowsedworkstoremovespace
8

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 đề

Chủ Đề