大文字と小文字が混在する文で特定のパターンが表示されるかどうかを識別するのに役立つ正規表現が必要です。
説明する:
キツネは岩の上に飛びました。
jumped
今パターンに小文字があるかどうかを知りたいです。この目標をどのように達成できますか?
もっと明確に説明します。私が望むのは、コードファイルのキーワードを大文字にすることです。これを行うには、まだ大文字で表示されていないキーワードを識別する必要があります。
Replace
理想的にはこれを行う必要がありますREPLACE
。
ただし、そのような場合を見つけるには、単語に小文字があるかどうかを識別できる必要があります。
答え1
printf %s\\n 'juMPEd'| sed 's/[^[:lower:]]//g'
出力
jud
答え2
Perlはこれをかなり簡単に行うことができます。
$ echo 'Fox juMPed the rock' | perl -pe 's/jumped/\U$&/i'
Fox JUMPED the rock
大文字と小文字を区別しない項目を見つけて、jumped
大文字のバージョンに置き換えます。
答え3
grep -ioE を使用すると、与えられた正規表現に一致するすべてのエントリを取得できます。
$ echo "abc jumped def Jumped fgh JUMPED klm" > file.txt
$ grep -ioE "j\w+" file.txt > matches.txt
$ cat matches.txt
jumped
Jumped
JUMPED
これで、結果を繰り返して、子/親の一致を完全に削除できます(bash)。
$ for w in $(cat matches.txt); do if [[ ! $w == ${w^^} && ! $w == ${w,,} ]]; then echo $w; fi; done > mixed.txt
$ cat mixed.txt
Jumped
混合単語ごとにsedを呼び出すことで、指定した一致を大文字で表示できます。
$ for w in $(cat mixed.txt); do sed -i "s:$w:${w^^}:g" file.txt; done
答え4
これは構成を通じてシェル内で完全に実行できますcase
。
string='Fox juMPed the rock'
case "$string" in
*[:lower:]*) echo "The string contains lowercase letters.";;
esac
kshではtypeset -u
。原稿がすべて大文字であるかどうかは重要ではありません。
string='Fox juMPed the rock'
typeset -u string
echo "SHOUTING: $string"
ファイルを操作している場合は、awkとそのtoupper
関数を使用して文字列を大文字に変換できます。s
大文字かどうかをテストするために使用できますが、関係なくs == toupper(s)
使用することもできますtoupper(s)
。