キリルアルファベットの最初の(大文字)文字を除くすべての文字を小文字にします。

キリルアルファベットの最初の(大文字)文字を除くすべての文字を小文字にします。

最初の文字を除くすべての文字を小文字にします。変更すると、最初の文字が「キャピタル」(キリル文字の大文字)のように見えました。残り(大文字を使用しない)は変更されません。

申し訳ありません。キリル文字です。たとえば、АБРАЗИЯ Абразия

私は正しい一般的なコマンドを出しました。

:%s/\<\u\zs\u*/\L&/g

しかし役に立たない

私のLinuxはGentooで、私のロケールはecho $LANG en_US.UTF-8です。

私も次のことを試しました。

 %s/\<[А-Я]\zs\[А-Я][а-я]*...

この構文を正しく使用する方法がわかりません。私の考えにはこれが効果があると思います。

分からないが、その後も

:se noic /[[:upper:]] 

動作しません。ロケール問題のようです(気になります)。

sed -n '322p' geod.txt | cut -f 1 -d " " 
АВГИТИТ—
sed -n '322p' geod.txt | cut -f 1 -d " " | xxd
0000000: d090 d092 d093 d098 d0a2 d098 d0a2 e280

すべての文字のUnicode番号は同じサイズです。

もう一度確認しました。

file -bi geod.txt
text/plain; charset=utf-8

したがって、utf-8を使用するのは問題ありません(ただし、「ファイル」が間違っている可能性があります)。

これは私のソースファイルです。 http://bpaste.net/show/140967/

ベストアンサー1

編集する:vim使用すべきか、使用すべきかについてsed少し混乱があるからです。私は次の両方のソリューションを提供します。

ウィム

次の置換は単語を小文字(最初の文字を除く)に置き換えます。単一文字の単語は大文字に変換されます。

:%s/\<\(\k\)\(\k*\)\>/\u\1\L\2/g

\k英数字と と一致します_。広く使用されている対応する\w文字は[A-Za-z0-9_]キリル文字ですが、キリル文字では失敗します。

\<単語の境界を特定すると、角かっこ\>グループは最初の文字と残りの文字と一致し、それぞれとを\1使用して検索されます\2

このモードが機能するには、vimがUTF-8を有効にする必要があります。

set encoding=utf-8

sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g' <inputfile>

\b一致する単語の境界sed、残りはバージョンと同じですvim。 (GNU sedでテストされており、文字クラスはsedすべてのバージョンでサポートされていない可能性があります。)

おすすめ記事