sed
一連のパターン内でテキストを印刷しようとする式を作成しています。
apt-cache showpkg gdm | sed -n '/Reverse Depends:/,/Dependencies:/ p'
これはデフォルトで機能し、現在の出力は次のとおりです。
Reverse Depends:
libgdm1:i386,gdm 3.8.3-3~
...
...
gnome-control-center-data,gdm 3.0
Dependencies:
しかし、私はパターン自体を含む行を望まないで、次のことをしたいと思います。
libgdm1:i386,gdm 3.8.3-3~
...
...
gnome-control-center-data,gdm 3.0
出力をgrep
オプションでパイプできることがわかります-v
。
grep -v "Reverse Depends:"
sed
しかし、選択の余地があってほしいです。頑張りました
$ apt-cache showpkg gdm | sed -n '/Reverse Depends:/-1,/Dependencies:/-1 p'
しかし、うまくいきません。
sed: -e expression #1, char 19: unknown command: `-'
答え1
最初の行と最初のパターンの間、2番目のパターンと最後の行の間のすべての内容を削除します。
apt-cache showpkg gdm | sed '1,/Reverse Depends:/d;/Dependencies:/,$d'
最初のパターンが最初の行に表示され、正規表現のチェックが多すぎると、パフォーマンスに影響を与える可能性があります。。
より良い方法:
$ apt-cache showpkg gdm |
sed -n '/Reverse Depends:/{
:1
n
/Dependencies:/q
p
b1
}'