私はその仕事に集中しようとしています。Auto-installed: 1
次の出力に含まれるすべての行と前の2行を除外したいと思います。私は間違いなくこれがgrep -v -B2 string
問題を解決すると思いました。言うまでもなく、状況はさらに悪化しました。
内容は次のとおりです。
Package: libopencore-amrwb0
Architecture: amd64
Auto-Installed: 1
Package: transfig
Architecture: amd64
Auto-Installed: 0
Package: xfig-libs
Architecture: amd64
Auto-Installed: 1
Package: xaw3dg
Architecture: amd64
Auto-Installed: 0
結果は次のとおりです。
Package: transfig
Architecture: amd64
Auto-Installed: 0
Package: xaw3dg
Architecture: amd64
Auto-Installed: 0
(空白行は表示されません。空白行が表示されない場合はプラスですが必須ではありません。結果には、サイレントインストール値が0のパッケージも含める必要があります。)
私もできることを知っています改行文字の一致しかし、何も印刷されないか、すべてが印刷されますが、間に改行があります。
どんな解決策でも許されます。 grep(Emacsでも)。
ベストアンサー1
データがどのように構成されているかはよくわかりませんが、表示されているとしたら、次はどうですか?
grep -B2 'Auto-Installed: [^1]'
これは各セクションに1行が含まれていると仮定しますが、Auto-Installed
これは正確ではないかもしれません。
これはawkプログラムです。
awk 'BEGIN{deleted=3}
!deleted{printf "%s",l[NR%3]}
deleted {--deleted}
{l[NR%3]=/./?$0"\n":$0}
/Auto-Installed: 1/{deleted=3}
END{for(i=NR+deleted;i<NR+3;++i)printf "%s",l[i%3]}'