希望の状態が存在するときにファイル内のセルを変更したい。例:
ファイル:
id311 vmName1 state0
id312 vmName2 state0
id313 vmName3 state0
スクリプトを入力すると、このスクリプトは1行の状態列を変更します。したがって、sed -i 's/state0/state1/g'
と入力するとすべてのstate0
はstate1
になります。次のように1行だけの状態を変更したい:
ファイル:
id311 vmName1 state0
id312 vmName2 state1
id313 vmName3 state0
Useidを持つ特別な行にsed
コマンドを使用するにはどうすればよいですか?注:IDは一意です。
sed '<line number>s/<search pattern>/<replacement string>/
の前に行番号を追加するだけです。
$ sed '1s/state0/XXXX/' file
id311 vmName1 XXXX
id312 vmName2 state0
id313 vmName3 state0
その場で編集したいので、次のように言います。
sed -i.bak '1s/state0/XXXX/' file
.bak
フラグの後に-i
を使用していることに注意してください。これにより、file
自体の変更が実行されますが、変更前のfile
の現在の内容でfile.bak
バックアップファイルも作成されます。
変数の行番号の場合、通常は変数を使用し、二重引用符で展開します。
sed -i.bak "${lineNumber}s/state0/XXXX/" file
Useidを持つ特別な行に
sed
コマンドを使用するにはどうすればよいですか?注:IDは一意です。
id
sは一意であるため、最初のフィールドをキーとして使用することは理にかなっています。
sed -i '/id312/s/state0/state1/' file
コマンドを作成し、ID番号とファイルをパラメーターとして渡すことができます。
#!/usr/bin/env bash
sed -i "/id$1/s/state0/state1/" $2
このように呼び出す:
./sed.sh 312 file
注:-i
スイッチには常に注意してください。最初にそれなしでテストしてください。