sedコマンドを使用して特定の行の最初の文字のみを大文字に変換する

sedコマンドを使用して特定の行の最初の文字のみを大文字に変換する

次の行の各単語の最初の文字をどのように大文字に変換しますかgr-description:

たとえば、

$ cat /tmp/test1
groMail:
[email protected]
gr-description:
abc-location-999
group-emailid:
[email protected]
members:
[email protected]
[email protected]
[email protected]

出力は

groMail:
[email protected]
gr-description:
Abc-Location-999
group-emailid:
[email protected]
members:
[email protected]
[email protected]
[email protected]

次のコマンドを試しましたが、マージできません

sed -n '/gr-description:/{n;p;}' grp1 | sed 's/\<./\u&/g'

答え1

sed拡張機能がある GNU または他のものを使用しているような\uので、次のことができます。

sed -e '/gr-description/{n;s/\b./\u&/g;}' < test1

これは、次を含む行と一致してgr-description実行されます。{}その瞬間。n次の行に移動して、一致した行を印刷してからsこのコマンドは単語の境界(\bまたは\<)と大文字のバージョン(\u&)。

これはすべて、あるパイプをsed別のパイプに接続せずに一度に実行されます。これは目的の操作を実行しません。進行中にストリームを編集するのではなく、行を出力するだけです。

関連情報