スポンサーリンク
特定の行の文字列を置換
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
※MACターミナル(BSD系)での動作確認です。
特定の行の文字列を置換するには、NR変数とgsub()を組み合わせると簡単です。
参考:awkのNR変数で行数に応じた処理をする
例えば、下記のin.txtがあったとします。
$ cat in.txt id1,ls id2,cat id3,printf id4,print id5,mkdir
下記がサンプルコードになります。
3~4行目の i を k に置換しています。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' { if(3 <= NR && NR <= 4){ gsub("i", "k", $0) } print $0 } '
下記が実行結果になります。
$ ./sample.awk id1,ls id2,cat kd3,prkntf kd4,prknt id5,mkdir
スポンサーリンク
行と列を指定して文字列を置換する
行と列を指定して文字列を置換するには、列変数、NR変数とgsub()を組み合わせるとできます。
下記がサンプルコードになります。
3~4行目の2列目の i を k に置換しています。
参考:awkのFS変数で区切り文字を設定
参考:awkのOFS変数で出力の区切り文字を設定する方法
$ cat sample2.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "," OFS = "," } { if(3 <= NR && NR <= 4){ gsub("i", "k", $2) } print $0 } '
下記が実行結果になります。
$ ./sample2.awk id1,ls id2,cat id3,prkntf id4,prknt id5,mkdir
スポンサーリンク