我正在尝试使用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"
我想更改/替换前两个并删除第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"
答案 0 :(得分:1)
未经测试但应该关闭:
awk -v RS= -v ORS="\n\n" '
{ c = ++count[$0] }
c == 1 { <replace some stuff> }
c == 2 { <replace other stuff> }
c <= 2
' file