Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换字符àèìòù;在bash脚本中_Bash_Shell_Unix_Sed - Fatal编程技术网

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

如何替换字符àèìòù;在bash脚本中,bash,shell,unix,sed,Bash,Shell,Unix,Sed,我必须重命名这样一个文件:IndennitáMalattia.doc 通过将字符a替换为a' 以下sed命令在命令行中工作,但不在.sh文件中 echo $FILE | sed -e s/à/a\'/g 有人能帮我吗? 谢谢 如下图所示更改您的sed echo $FILE | sed "s/à/a'/g" 以及任何其他等效的重音字符,您可能会发现这个Perl脚本非常有用。它将通过将所有严重重音转换为撇号来重命名指定的文件: #!/usr/bin/env perl use v5.14; use

我必须重命名这样一个文件:IndennitáMalattia.doc 通过将字符a替换为
a'

以下sed命令在命令行中工作,但不在.sh文件中

echo $FILE | sed -e s/à/a\'/g
有人能帮我吗?
谢谢

如下图所示更改您的sed

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

以及任何其他等效的重音字符,您可能会发现这个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);
}

您可能有编码问题。确保文件和终端环境都使用UTF-8。(例如,外壳的导出LC\u ALL=it\u it.UTF-8,以及vim中的设置文件NECODING=utf8)。相关且有用:
#!/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);
}