sed 字母更改为非英文字母?

sed 字母更改为非英文字母?

我想将我的语言字母转换为英语 equalevent。它应该是这样的:

echo "İığüşöç" | <sed command>
Iigusoc

我该怎么做?编辑:我意识到,我想全部大写。

这是我的代码

#!/bin/bash

echo "İlçe seçin"
read n | <a command can make convert to english equalevent and make uppercase>                 
sonuc=$(w3m http://www.koeri.boun.edu.tr/scripts/lst5.asp | grep $n)
echo "$sonuc"

答案1

$ printf '%s\n' 'İığüşöç' | iconv -t ASCII//TRANSLIT
Iigusoc

适用于某些系统(//TRANSLIT我相信来自 Solaris,但 GNU 系统也支持)。

在使用 UTF-8 作为字符映射的语言环境中,您还可以使用:

$ locale charmap
UTF-8
$ printf '%s\n' 'İığüşöç' | uconv -x Latin-ASCII
Iigusoc

另请参阅 GNUrecode的:

$ printf '%s\n' 'İığüşöç' | recode ..ascii
Iig"us"oc
$ printf '%s\n' 'İığüşöç' | recode -f ..flat
Iigusoc

使用sed支持正则表达式和 with 中的字符等效的实现zsh

$ printf -v sed_script 's/[[=%s=]]/%1$s/g\n' {a..z}
$ printf '%s\n' 'İığüşöç' | sed $sed_script
iıgusoc

ı不被认为属于同一同等类别iI

相关内容