sed を使用した特定のパターン間の置換

sed を使用した特定のパターン間の置換

sed朝はインターネット検索をしてみましたが、うまく動作しないようです。

sedで可能ですか?小文字2つの特定の文字間のテキスト:

つまり

SOMENAME=WOODSTOCK,
SOMEOTHERNAME=JIMMY,

できますか?小文字 WOODSTOCKそしてJIMMY=(ウッドストックとジミに)彼らはと,

ベストアンサー1

GNU sedはこれを達成できます。交換がどれほど欲しいかに応じて、これら2つの形式のいずれかを選択してください。

sed 's|=.*,|\L&|' file
sed 's|=[^,]*,|\L&|' file

マニュアルに記載されているように, " or が見つかる\Lまで置換内容を小文字に変換します。"\U正規表現に一致するテキストです。\E&


=.*,貪欲な正規表現と貪欲な正規表現の間で賢明に=[^,]*,選択する必要があることを示すために、サンプルファイルを修正しました。

$ cat file
SOMENAME=WOODSTOCK,
SOMEOTHERNAME2=JIMMY,WOODSTOCK,FINISH
$ sed 's|=.*,|\L&|' file
SOMENAME=woodstock,
SOMEOTHERNAME2=jimmy,woodstock,FINISH
$ sed 's|=[^,]*,|\L&|' file
SOMENAME=woodstock,
SOMEOTHERNAME2=jimmy,WOODSTOCK,FINISH

おすすめ記事