その行のテキストが別の行で複数回繰り返されるときにシェルスクリプトを使用してファイル内の特定の行の内容を変更する方法

その行のテキストが別の行で複数回繰り返されるときにシェルスクリプトを使用してファイル内の特定の行の内容を変更する方法

その行のテキストが別の行で複数回繰り返される場合は、シェルスクリプトを使用してファイル内の特定の行の内容を変更するにはどうすればよいですか?たとえば、私のファイルでは次のようになります。

##############################
[CC-COARSEGRID-PRECONDITIONER]
##############################
# Relaxation parameter
domega = 1.0
##############
[CC-PRECONDMK]
##############
# Relaxation parameter
domega = 0.9

最後の行を次に変更したい:domega = 0.4

答え1

あなたが使用できるsed/ tac:

tac file | sed '0,/domega = .*/s/domega = .*/domega = 0.4/' | tac
  • tac fileファイルを反転します。
  • 0,/domega = .*/domega行0と最初(現在の最後)の項目の間でのみ置き換えます。
  • s/domega = .*/domega = 0.4/その後、交換してください。
  • tac再び反転。

関連情報