2022年4月18日 星期一

【Python】編碼問題:UnicodeEncodeError: ‘ascii’ codec can’t encode characters

 https://kirin.idv.tw/%E3%80%90python%E3%80%91%E7%B7%A8%E7%A2%BC%E5%95%8F%E9%A1%8C%EF%BC%9Aunicodeencodeerror-ascii-codec-cant-encode-characters/

 

 

寫個小程式,檢查一下編碼狀況

import sys

print(sys.getdefaultencoding())
print(sys.stdin.encoding)
print(sys.stdout.encoding)
print(sys.stderr.encoding) 
 

最快的解決方式是在 bash 中執行以下指令,就可以正常的顯示

export PYTHONIOENCODING=utf-8

 

另一個方式則是在程式中處理,在程式中加入以下程式碼

import codecs
import sys

sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

 

 

2022年2月22日 星期二

linux 批量修改檔案內容

1. 
grep  -rn "aaa" /usr/local/
表示 /use/local 目錄下 所有匹配"aaa" 的字串和行號
grep  -rl "aaa" /usr/local/
表示 /use/local 目錄下 所有匹配"aaa" 的檔名

############################################################################

2.

#   sed -i "s/要找查詢的文字/替換後的文字/g" `grep -rl "要找查詢的文字" ./` 

注意grep  · · 和轉移字元"和/,  如果匹配的字元出現了以上字串,要用 \ 轉移

############################################################################

3.實例 

把文字檔*.xml中,內容有50531334的,其對應內容全部換成80115433

 sed -i "s/50531334/80115433/" `grep -rl 50531334 *.xml`