我已經file.txt的含刪除多行的上方和下方從匹配圖案在一個文件中:使用AWK/SED/grep的
registered
{
hostname-1
{
AAA 32;
BBB uuid-1;
ip 192.168.1.1;
host hostname-1;
...
...
...
}
}
registered
{
hostname-2
{
AAA 31;
BBB uuid-2;
ip 192.168.1.2;
host hostname-2;
...
...
...
}
}
registered
{
hostname-3
{
AAA 33;
BBB uuid-3;
ip 192.168.1.3;
host hostname-3;
...
...
...
}
}
欲基於匹配IP刪除一個完整的註冊塊。
E.g.如果IP爲192.168.1.2,那麼輸出應該是:
registered
{
hostname-1
{
AAA 32;
BBB uuid-1;
ip 192.168.1.1;
host hostname-1;
...
...
...
}
}
registered
{
hostname-3
{
AAA 33;
BBB uuid-3;
ip 192.168.1.3;
host hostname-3;
...
...
...
}
}
我嘗試2種方法來實現這一點,但不能使它工作
1)使用grep:這沒有奏效。
grep -v -B6 -A6 $IP file.txt > out.txt
mv -f out.txt file.txt
2)使用AWK: 如果我給出確切IP awk命令之下,然後它工作
awk '/192.168.1.2/{for(x=NR-6;x<=NR+6;x++)d[x];}{a[NR]=$0}END{for(i=1;i<=NR;i++)if(!(i in d))print a[i]}' file.txt
但我想通過變量$ IP awk命令。這是行不通的
awk -v pattern="${IP}" '$0 ~ pattern/{for(x=NR-6;x<=NR+6;x++)d[x];}{a[NR]=$0}END{for(i=1;i<=NR;i++)if(!(i in d))print a[i]}' file.txt
任何幫助找出問題在這裏將不勝感激。
謝謝。
awk one with variable has a typo ...'/'不應該在那裏 – Sundeep
謝謝你指出這個問題。是的,刪除'/'後它工作。 – user4060247