GNU sed で可能です。後継者の貪欲さに基づいて、これら 2 つの形式のいずれかを選択してください。
sed 's|=.*,|\L&|' file
sed 's|=[^,]*,|\L&|' file
マニュアルにあるように、「\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
POSIX 準拠の awk
、 tolower()
を使用できます 関数
awk -v FS='=' 'BEGIN { OFS = FS } { $2 = tolower($2) }1 ' file
mktemp()
を使用 関数を使用して一時ファイルを作成し、上記のコマンドの出力をリダイレクトしてから、リダイレクトして元の場所に保存します。または、GNU awk
を使用します>=-i inplace
で 4.1
match()
を使用した POSIX 準拠バージョンの別のバリアント 関数はすることです
awk 'match($0, /=([^,]*),/) { str = substr($0, RSTART+1, RLENGTH-2); sub(str, tolower(str)) }1'