先ほどしたことを経験したsed チュートリアル記事。誰かがこのコマンドを説明するのに役立ちますか? (ピリオドの後に文字が大文字に変わります。)
sed -E 's/(^[a]|\. [a-z])/\U&\E/g' filename.txt
ベストアンサー1
あなたがリンクしたチュートリアルは非常に表面的です。
sedを真剣に使いたいならオススメですhttp://www.grymoire.com/Unix/Sed.html 代わりに。
sedのコマンドはs
a from pattern
、a、to string
およびオプションでsomeを使用しますflags
。伝統的に文字で区切られていますが、/
どんな句読点でも使用できます。これは、fromまたはtoパラメーターに/文字が含まれている場合に適しています。
したがってこの場合フラグはg
、 from パターンは(^[a]|\. [a-z])
、 to 文字列は です。\U&\E
この時点で、fromパターンを理解する方法を知る必要があります。この()
文字は、パターンのさまざまな部分を結合するために使用されます。これは|
操作なので、or
orとthis|that
一致します。行の先頭と一致し、文字と一致するため、行の先頭の文字と一致します。 theは文字と一致し、スペースはスペースと一致し、およびはとの間の文字と一致します(これらはすべて小文字で他の文字ではありません)。それらを一緒に使用すると、ピリオド(ピリオド)、スペース、および間の文字が一致する項目が得られます。this
that
^
[a]
a
^[a]
a
\.
.
[a-z]
a
z
\. [a-z]
a
z
to 文字列は\U&\E
次のようにデコードされます。 the は&
from パターンと一致する文字です。\U
次の内容を大文字に変換して\E
変換終了を示します。 \U および \E は sed の gnu 拡張です。 POSIXですsed
これらのg
フラグは、一致をできるだけ多く置き換えて繰り返す必要があることを示します。
したがって、チュートリアルからコピーしたコードは次のように変換されます。誰でも小文字 a または「ピリオド・スペース lower_case_letter」で大文字で始まるシーケンス。