2016-04-28 39 views
5

Tôi có nhiều văn bản ở dạng chữ thường, chỉ có vấn đề là có rất nhiều ký tự đặc biệt mà tôi muốn xóa tất cả bằng số.Xóa tất cả các ký tự đặc biệt khỏi một chuỗi trong Bash

lệnh Tiếp theo đó là không đủ mạnh:

tr -cd '[alpha]\n ' 

Trong trường hợp éćščž và một số người khác nó sẽ trả về "?" Nhưng tôi muốn loại bỏ tất cả chúng. Có lệnh nào mạnh hơn không?

tôi sử dụng Linux bạc hà 4.3.8 (1) -release

+3

Mọi nhân vật đều đặc biệt theo cách riêng của mình. –

+0

Câu hỏi của bạn không rõ ràng lắm. Đưa ra một ngữ cảnh nhiều hơn một chút có thể sẽ mang lại nhiều câu trả lời hữu ích hơn. –

Trả lời

11

Bạn có thể sử dụng tr để chỉ in các ký tự có thể in từ chuỗi như sau. Chỉ cần sử dụng lệnh dưới đây trên tệp đầu vào của bạn.

tr -cd "[:print:]\n" < file1 

Cờ -d có nghĩa là để các xóa các bộ ký tự được xác định trong các đối số trên dòng đầu vào, và -c là dành cho việc bổ sung những người (nghịch những gì đang được cung cấp). Vì vậy, nếu không có -c lệnh sẽ xóa tất cả các ký tự có thể in khỏi luồng đầu vào và sử dụng nó bổ sung bằng cách xóa các ký tự không thể in. Chúng tôi cũng giữ ký tự dòng mới \n để duy trì kết thúc dòng trong tệp đầu vào. Loại bỏ nó sẽ chỉ tạo ra kết quả cuối cùng trong một dòng lớn.

[:print:] chỉ là một POSIX bracket expression là sự kết hợp của các biểu thức [:alnum:], [:punct:] và khoảng trắng. Các [:alnum:] là giống như [0-9A-Za-z][:punct:] bao gồm ký tự !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

2

Tôi không chính xác nhất định mà văn bản được phát ra từ trong câu hỏi của bạn nhưng cho phép chỉ nói rằng "rất nhiều văn bản trong chữ thường" là trong tập tin gọi là special.txt bạn có thể làm một cái gì đó như sau nhưng tập trung nhiều hơn vào các ký tự mà bạn muốn giữ:

cat special.txt | sed 's/[^a-z A-Z]//g' 

Nó là một chút như làm phẫu thuật bằng rìu mặc dù.

Một giải pháp khả thi trong bài Remove non-ascii characters from ...

Nếu ở trên không giải quyết được câu hỏi của bạn, hãy cố gắng cung cấp thêm một chút chi tiết và tôi có thể có thể cung cấp một câu trả lời hành động nhiều hơn nữa.

Các vấn đề liên quan