sed處理xshell軟體記錄的日誌檔案的編碼問題

2021-10-02 07:32:51 字數 998 閱讀 5431

昨天在使用 sed 替換乙個檔案中的內容時,發現 sed 無法正常工作。將檔案上傳到虛擬機器中,執行同樣的命令仍舊不能正常工作,一度讓我懷疑自己是不是把命令記錯了。

使用了非常簡單的刪除命令發現也不能正常工作,讓人有點無語。

這之後又用乙個系統中的正常檔案進行測試,發現 sed 可以正常工作,我感到非常的不解。

搞了一會,使用 cat -a 檢視了下檔案的內容時,發現竟讓輸出了一堆亂碼,如下所示:

^@o^@l^@d^@_^@r^@e^@g^@ ^@i^@s^@2^@d^@4^@0^@c^@0^@0^@^m^@$
看到了這個輸出,我才反應過來應該是編碼的問題。執行 file 命令檢視檔案的編碼,發現竟然是 utf-16。

longyu@longyu-pc:/tmp$ file test.log 

test.log: little-endian utf-16 unicode text, with crlf line terminators

我使用 sed 替換的 test.log 檔案的部分內容如下:

old_reg is 12940c00, ret is 12940c00

old_reg is 12d40c00, ret is 12d40c00

執行如下iconv命令轉換編碼為 utf-8。

longyu@longyu-pc:/tmp$ iconv -f utf-16 -t utf-8 ./test.log  | file -

/dev/stdin: ascii text, with crlf line terminators

再次使用 sed 處理轉化過的檔案,能夠正常工作。

sed 不能處理 unicode 的問題我是有所了解的,但是我卻忽略了檔案的格式為 utf-16 的問題。

這個 test.log 是 xshell 中記錄的日誌檔案,有必要記錄一下,免得以後踩相同的坑。

sed使用記錄

一 插入批量內容 批量修改檔案內容一般使用sed,但是在插入多行內容和不同格式的時候就遇到困難了,今天終於知道怎麼處理了,記錄一下!插入以下內容。變更前 apiversion extensions v1beta1 kind deployment metadata spec apiversion ex...

如何記錄Xshell的操作記錄

作為好用的終端模擬器,xshell中也可以設定記錄它的操作,那麼這就需要設定主機日誌,作為新手,如果不知道要怎樣進行設定呢?下面就一起來學習xshell設定主機日誌方法。具體操作步驟如下 1 執行xshell終端模擬軟體,滑鼠切換到檔案選項卡,執行開啟命令,如下圖所示 圖1 執行開啟會話命令 2 在...

sed命令使用記錄

背景 檔案a,檔案b,檔案格式一致,有兩列,第一列為key,第二列為value。目的 將檔案a中的內容插入到檔案b中,不能在最後,不能有重複key 我的key和value用tab鍵分割 實現 我的實現很low,就是查詢key,若有再刪除再寫入,若無則直接寫入。增加了全域性變數a是為了插入b檔案後的順...