0

awk を使用して、ファイル内の複数の文字列を置き換えようとしています。置き換えて削除する必要がある一連の行が繰り返されています。たとえば、ファイルには

INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"

INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"

INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"

最初の2つを変更/置換し、3番目、4番目、...、N番目を削除したい

INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar_b"

INSTANCE "BUFX2":"physical"
"A" : "pp_resetbar_b"
"Y" : "pp_resetbar"

正直なところ、どこから始めればよいかさえわかりません。N 番目のオカレンスを置き換えるスクリプトを作成しましたが、うまくいかないようです。下記参照。どんな助けでも大歓迎です。

awk -v search=$2 -v replace=$3 -v cnt=$4 '$0 ~ search{c++;if(c==cnt){sub(search,replace);}}1' "$file" > temp && mv temp "$file"
4

1 に答える 1

1

テストされていませんが、近いはずです:

awk -v RS= -v ORS="\n\n" '
    { c = ++count[$0] }
    c == 1 { <replace some stuff> }
    c == 2 { <replace other stuff> }
    c <= 2
' file
于 2012-10-29T02:54:26.373 に答える