単語と最後の行の間にテキストをインポートしますか?

単語と最後の行の間にテキストをインポートしますか?

スタックオーバーフロー質問の回答に基づいてsed / grepを使用して2つの単語間のテキストを抽出するには?、我々は2つの単語の間のテキストを得ることができます:

sed -n "/first/,/second/p" file

しかし、次のようにファイルの単語と最後の行の間にテキストをインポートするにはどうすればよいですか?

sed -n "/word/,/lastline/p" file

ベストアンサー1

実行したい最後の行が含まれています。

sed -n '/word/,$p'

wordこれは、最後の行まで、すべての項目の最初の項目と一致し、すべての一致を印刷します。

最後の行を除く:

sed '/word/,$!d;$d'

...削除否定的な一致した後、最後の行を削除してください。

最後のゲームから最後の行まで行くには、もっと頑張ってください。

 sed -e :n -e '/\n.*word/D;N;$q;bn'

繰り返す - 通常のsedラインループを完了せずに、代わりに次の入力ラインをパターンスペースバッファに追加してb再実行するために戻ります。ただし、パターン空間に少なくとも2行があり、最後の行が一致する場合言葉一致する行を除き、バッファ内のすべてを削除します。言葉。最後の行では、quitsループが中断されます。したがって、印刷されるのは、次を含む行の最後の項目のすべてです。言葉最後の行まで。

うーん…おそらく私が必要以上に大変にしているようです。

sed 'H;$x;/word/h;$!d'

このようにしてスペースを保存するために、各行が追加されます。しかし、ラインは一致します。言葉それから書くスペースを維持してください。最後の行を除くパターン空間のすべての行が削除されます。最後の行では、ホールドスペースに貼り付けた直後にホールドスペースとパターンスペースがスワップされます。(最後の行に単語も含まれている場合)そして前回のすべて言葉印刷オーバーレイ予約スペース。

おすすめ記事