如何在bash脚本中替换字符à,è,ì,ò,ù

时间:2014-12-12 13:00:23

标签: bash shell unix sed

我必须重命名一个文件:IndennitàMalattia.doc 将字符à替换为a'

以下sed命令在命令行中有效,但不在.sh文件中。

echo $FILE | sed -e s/à/a\'/g

有人可以帮帮我吗? 谢谢!

3 个答案:

答案 0 :(得分:1)

如下所示更改您的sed,

echo $FILE | sed "s/à/a'/g"

答案 1 :(得分:0)

mv "${File}" "$( echo "${File}" | sed "s/à/a'/g;s/è/e'/g;s/ì/i'/g;s/ò/o'/g;s/ù/u'/g" )"

和任何其他重音字符等效

答案 2 :(得分:0)

您可能会发现此Perl脚本很有用。它将重命名指定的文件,方法是将所有重音重音转换为撇号:

#!/usr/bin/env perl
use v5.14;
use autodie;
use warnings;
use warnings qw( FATAL utf8 );
use utf8;
use open qw ( :encoding(UTF-8) :std );
use charnames qw( :full :short );

use Unicode::Normalize;

# if no args specified, use example from question
@ARGV = qw(IndennitàMalattia.doc) unless @ARGV;  

foreach my $old_name (@ARGV) {
  (my $new_name = NFD($old_name)) =~ s/\N{COMBINING GRAVE ACCENT}/'/g;
  say qq{Renaming "$old_name" to "$new_name"};
  rename $old_name, NFC($new_name);
}