Pコマンド

大文字のPコマンドは、現在のパターンスペースの最初の改行までを出力。小文字のpコマンドが全部出力なのと違う。

input='
言語:Java
  まあまあ
言語:Python
  普通
言語:Bash
  そこそこ'

script='/^言語:/ {
  N # 次の入力行をパターンスペースに追加
  /(まあまあ)|(そこそこ)/ P
}'

# 拡張正規表現
echo "$input" | sed --regexp-extended --quiet "$script"

上記は「言語」の次の行が「まあまあ」か「そこそこ」なら「言語」の行を出力するというもの。Nコマンドでパターンスペースが2行になっているが、大文字のPコマンドは最初の改行までを出力なので、結果はこうなる。

言語:Java
言語:Bash