日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

去除linux 文件中的控制字符,Shell乱码文件中的控制字符处理

發布時間:2025/3/17 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 去除linux 文件中的控制字符,Shell乱码文件中的控制字符处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、顯示文件中的控制字符

當從其他系統下載文件時,有時要刪除整個文件的控制字符(非打印字符),從菜單中捕獲一個應用的屏幕輸出有時也會將控制字符輸出進文件,怎樣知道文件中是否有控制字符?使用cat-vfilename命令,屏幕會亂叫,且到處都是一些垃圾字符,這可以確知文件中包含有控制字符,如果有興趣可以觀察一下這些字符以便于更加確認它們是控制字符。一些系統中使用catfilename而不是cat-v來查看非打印字符。

sed格式為:[address,[address]]l‘l’意為列表。

一般情況下要列出整個文件,而不是模式匹配行,因此使用l要從第一到最后一行。模式范圍1,$即為此意。

如果cat一個文件,發現實際上包含有控制字符。

$cat –v a.txt

This is the F1 key:^[OP

This is the F2 key:^[OQ

現在運行sed命令,觀察輸出結果。

$sed –n '1,$l' a.txt

This is the F1 key:\033OP$

This is the F2 key:\033OQ$

$

sed找到并顯示了兩個控制字符。\033代表退格鍵,OP為F1鍵值,放在退格鍵后。第二行也是如此。各系統控制字符鍵值可能不同,主要取決于其映射方式(例如使用terminfo或termcap)。

如果要在文本文件中插入控制字符F1鍵,使用vi查看其鍵值,操作如下:

?啟動vi。

?進入插入模式。

?按下鍵,然后按鍵(出現a^)。

?釋放上述兩個鍵。

?按下F1鍵(顯示[OP]。

?按下鍵(顯示F1鍵值)。

二、處理控制字符

處理這樣的控制字符有兩種辦法(但不一定滿足所有情況,具體情況具體實現吧)。

第一種:直接執行dos2unixa.txt? (這只可以處理dos到unix下的換行問題)

第二種:使用sed剔除控制字符。

下面是傳送過來的文件(dos.txt)的部分腳本。必須去除所有可疑字符,以便于帳號所有者使用文件。

$? cat -v dos.txt

12332##DISO##45.12^M

00332##LPSO##23.14^M

01299##USPD##34.16^M

可采取以下動作:

1)用一個空格替換所有的(##)符號。

2)刪除起始域中最前面的0(00)。

3)刪除行尾控制字符(^M)。

一些系統中,回車符為^@和^L,如果遇到一些怪異的字符,不必擔心,只要是在行尾并且全都相同就可以。按步執行每一項任務,以保證在進行到下一任務前得到理想結果。使用輸入文件dos.txt。

任務1。刪除所有的#字符很容易,可以使用全局替換命令。這里用一個空格替換兩個或更多的#符號。

$ ?sed 's/##*/ /g' dos.txt | cat -v

12332 DISO 45.12^M

00332 LPSO 23.14^M

01299 USPD 34.16^M

任務2。刪除所有行首的0。使用^符號表示模式從行首開始,^0*表示行首任意個0。模式s/^0*//g設置替換部分為空,即為刪除模式,正是要求所在。

$? sed 's/^0*/ /g' dos.txt | cat -v

12332##DISO##45.12^M

332##LPSO##23.14^M

1299##USPD##34.16^M

任務3。最后去除行尾^M符號,為此需做全局替換。設置替換部分為空。模式為:‘s/^m//g’,注意‘^M’,這是一個控制字符。要產生控制字符(^M),需遵從前面產生F1鍵同樣的處理過程。步驟如下;鍵入seds/,然后按住鍵和v鍵,釋放v鍵,按鍵。下面命令去除行尾^M字符。

$? sed 's/^M//g' dos.txt | cat -v

12332##DISO##45.12

00332##LPSO##23.14

01299##USPD##34.16

分步測試預想功能對理解整個過程很有幫助。用sed在移到下一步前測試本步功能及結果很重要。如果不這樣,可能會有一大堆包含怪異字符的意料外的結果。

總結

以上是生活随笔為你收集整理的去除linux 文件中的控制字符,Shell乱码文件中的控制字符处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。