gpt4 book ai didi

bash - 使用 UNIX Bash 脚本将文件名中的外来字符替换为等同的英文字符

转载 作者:行者123 更新时间:2023-12-05 05:23:37 24 4
gpt4 key购买 nike

我正在尝试使用 sed 来处理文件名列表,并将文件名中的每个外来字符替换为对应的英语字符。例如。

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 shell 中的 Mac OsX 上。

最佳答案

应该这样做:

for f in *.txt; do
newf=$(echo $f | iconv -f utf-8-mac -t utf-8 | sed 'y/āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒŪÚǓÙǕǗǙǛ/aaaaeeeeiiiioooouuuuüüüüAAAAEEEEIIIIOOOOUUUUÜÜÜÜ/')
mv $f $newf
done

iconv -f utf-8-mac -t utf-8 将文本从utf-8-mac转为utf-8,解决了@评论中讨论的预合成/分解问题PavelGurkov 和@ninjalj。

关于bash - 使用 UNIX Bash 脚本将文件名中的外来字符替换为等同的英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37304443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com