修正する:多くのコメント作成者が指摘したように、私の質問の形式が正しく指定されていません。申し訳ありませんでした!私の質問を更新していますが、参考のために最後の質問を残してください。
更新された質問 与えられた2つの式(正規表現など)の間の行を抽出し、ファイルの終わりに達するまでこれを繰り返したいと思います。
したがって、与えられた入力は次のようになります。
apple
hello
banana
world
brave
new
blueberries
hello
orange
fiddle
world
cup
とパターンhello
sum world
、出力が欲しい。
hello
banana
world
hello
orange
fiddle
world
役に立つ場合は、重複する部分がないと仮定できます。つまり、hello
以前に2つに会ったことはありませんworld
。
古い質問
seq 20 | sed -n '4,6p'
以下を出力します。
4
5
6
しかし、私が望むものは:
4
5
6
14
15
16
sed(またはawkまたはgrep)を使用してこれを行う方法はありますか?ありがとうございます!
ベストアンサー1
試してみてsed
はいかがでしょうか?
seq 20|sed -n '4,6p;14,16p'
または使用awk
seq 20|awk 'NR>3&&NR<7||NR>13&&NR<17'
行番号ではなく行の内容を一致させたい場合は、これら2つの方法のいずれかを使用できます。
seq 20|sed -n '/^4$/,/^6$/p;/^14$/,/^16$/p'
seq 20|awk '/^4$/,/^6$/;/^14$/,/^16$/'