最初の英字が小文字の場合は大文字に変更

最初の英字が小文字の場合は大文字に変更

英語の文章のリストを含むMarkdown文書がありますmyfile.md。一部は最初の文字が小文字で、一部が大文字です。
すべての英語の文章は標準の英語文字で始まり、特殊文字は使用されません。

x
x
x

このロジックに従う関数が必要です。
最初の英字が小文字の場合は大文字に変更

したがって、ファイルを次のように変更します。

XX



私が試したこと

1)tr

tr正規表現を使用してこれを実行したいのですが、ファイル内の正規表現を結合する方法やファイル内のデータを処理する方法が見つかりませんでした'tr '[:lower:]' '[:upper:]' myfile.md 。代わりに、次のようにシェルプロンプトでテキストを変換する方法を見つけました。trtr

echo x | tr '[:lower:]' '[:upper:]'

X

2)sed

sed 's/^[a-z]*/[A-Z]/' myfile.md
sed -r 's/^[a-z]*/[A-Z]/' myfile.md

ただし、実行後もmyfile.mdまだ含まれます。

x
x
x

代わりに:

XX


私の質問

CLUIテキストエディタ(または)を使用せずにシェルでnano説明されているロジックをどのように使用できますかvim

ベストアンサー1

\UGNU sedの機能を使用してください。

 s/^\([a-z]\)/\U\1/

したがって、行の先頭にある単一の文字は、文字が小文字の場合はキャプチャされ、文字が大文字の場合はその文字がキャプチャされます。

\U は他に興味がないので、次のように単純化されます。

s/\(.\)/\U\1/

.行の最初の文字(存在する場合)が一致するためです。

おすすめ記事