2つの文字列の間にテキストを印刷する - 2番目の発生を無視する

2つの文字列の間にテキストを印刷する - 2番目の発生を無視する

複数の手順を含む指示ファイルがあります。グラフィック環境なしでシェルで必要な個々のステップを見たいです。あなたが言ったように、今私がしていることはアレモアsed表示するステップ番号と次のステップ番号内の内容を抽出するために使用されます。

cat file | sed -n '/12/,/13/p'

ステップ12:他のものステップ
commands to execute
13:他のもの

私が望むように正確にやりたいのは、最後の行を省略することです。sedつまり、最初の項目から2番目の項目まで印刷することです。 2行目を避け、出力から最後の行を削除して印刷したいです。

ステップ12:いくつかのこと
commands to execute

これを達成するには、コマンドをどのように変更する必要がありますか?追加のコマンド、パイプなどが欲しくない。可能であれば、「1つは印刷し、もう1つは省略」など、最初のパターンを2番目のパターンと区別するために使用法を変更しますsed(または同様に、単に他のツール(たとえば)を使用)。grep

そして命令もできるだけ簡単に作って簡単に覚えて、短時間で書き出すことができるようにしたいと思います。

ベストアンサー1

Don_crisstiがコメントで解決策を提示しました。 (彼の文書に従ってください。)命名規則):

sed -n '/12/,/13/{/13/!p}' UUoC.txt

これにより、12ファイルの1行から1行までのすべての行が選択され、一致しない限り印刷されます(それはすべてです)。13UUoC.txt13/13/!p

もう1つの方法は、head次を使用して最後の行を削除することです。

sed -n '/12/,/13/p' file.txt | head -n -1

おすすめ記事