使用してファイル内のマッチングパターンから上方および下方に複数の行を削除します。は、私は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の一致に基づいて、一つの完全な登録されているブロックを削除したいです。
など。 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;
...
...
...
}
}
私はgrepを使用)、これを達成するための2つの方法を試してみましたが、それは
1を動作させることができませんでした:これは動作しませんでした。 awkの使い方
grep -v -B6 -A6 $IP file.txt > out.txt
mv -f out.txt file.txt
2):私は下のawkコマンドで正確なIPを与えると は、それは
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
作品しかし、私はawkコマンドで変数$ IPを通過したいです。それは動作していません
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はタイプミスをしています... '/'はそこにあるべきではありません – Sundeep
問題を指摘していただきありがとうございます。はい、 '/'を取り除いた後で動作しました。 – user4060247