簡體   English   中英

如何刪除Linux文本中的所有特殊字符

[英]How to remove all special characters in Linux text

vim pic 如何刪除圖片1中顯示為藍色的特殊字符,如:^ M,^ A,^ @,^ [。 根據我的理解,^ M是一個windows換行符,我可以使用sed -i '/^M//g'刪除它,但它不能刪除其他人。 命令dos2unix也不起作用。 是否有任何方法可以用來刪除它們?

刪除除可打印字符(字符類[:print:] )以外的所有內容,使用sed

sed $'s/[^[:print:]\t]//g' file.txt

[:print:]包括:

  • [:alnum:] (alpha-numerics)
  • [:punct:] (標點符號)
  • 空間

ANSI C引用( $'' )用於將\\t解釋為$''內的文字選項卡(以bash和類似的方式)。

要確保命令在Sed中使用有限的范圍,強制使用“C”(POSIX)字符分類以避免使用非ASCII字符的不可預測的行為:

LC_ALL=C sed 's/[^[:blank:][:print:]]//g' file.txt

嘗試在linux命令提示符下運行以下命令

選項 - 1 :(如果在Linux機器上安裝了dos2unix命令)

dos2unix sample_file.txt

選項-2:

cat sample_file.txt | tr -d '\015' > new_sample_file.txt

在vi或vim中嘗試這個:

[在ESC模式下]輸入::%s / ^ M // g

要么:

sed -e "s/^M//" filename > newfilename

重要說明 :要輸入^ M,請鍵入CTRL-V,然后鍵入CTRL-M

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM