我正在嘗試使用sed來處理文件名列表,並用英語同義字替換文件名中的每個外部字符。例如。使用UNIX Bash腳本替換英文文件名中的外來字符
málaga.txt - > malaga.txt
我的腳本如下:
for f in *.txt
do
newf=$(echo $f | sed 'y/āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛ/aaaaeeeeiiiioooouuuuüüüüAAAAEEEEIIIIOOOOUUUUÜÜÜÜ/')
mv $f $newf
done
這目前對文件名沒有影響。但是,如果我使用相同的正則表達式來處理文本文件。例如。
cat blah.txt | sed 'y/āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛ/aaaaeeeeiiiioooouuuuüüüüAAAAEEEEIIIIOOOOUUUUÜÜÜÜ/
它的工作原理非常完美 - 所有外來字符都用它們的英文等值替換。任何幫助將不勝感激。這是在UNIX外殼的Mac OsX上。
不錯,但告訴我什麼是外來字符? ;) – sjsam
我指的是這樣的字符:āáǎàēéěèīííììóóǒòūúǔùǖǘǚǜāÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛ – Binaromong
對你而言,一種外來語言可能是本地語言,也就是我的意思。你不必進一步解釋。你的問題很明顯,你試圖達到什麼:) – sjsam