GNU/Linux >> Linux の 問題 >  >> Linux

sed を使用して特定のパターンを置き換える

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 準拠の awktolower() を使用できます 関数

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'

Linux
  1. Bashを使用して特定のファイルのmtimeを取得しますか?

  2. grep と sed を使用して文字列を検索して置換する

  3. awk または sed を使用して特定の文字を削除する

  1. Linuxでsedを使用してテキストファイルを検索および置換する

  2. シェルスクリプトを使用して、指定されたパターンの後にファイルに複数の行を挿入します

  3. sedを使用して、ファイル内の行の範囲内のテキストを検索して置換します

  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. 大きなファイルにSedとParallelを使用して、行を別のコンテンツに置き換えますか?

  3. Sedコマンドを使用した後にファイルを保存しますか?