sed を使用して、最後に一致した行を除いて、特定の日付より前のすべての行を取得します。

sed を使用して、最後に一致した行を除いて、特定の日付より前のすべての行を取得します。

sedを使用してファイルから行を取得する必要がありますが、最後の行を印刷したくありません。これを行うには、このコマンドに何を追加する必要がありますか?

sed "/$START_DATE/q" user.log>test2.log

答え1

GNU sedがある場合は、次のようqに置き換えることができますQ

Q [終了コード]

This command accepts only one address.

This command is the same as q, but will not print the contents of pattern space.

だからsed "/$START_DATE/Q" user.log>test2.log


それ以外の場合は、デフォルトの印刷をオフにして明示的に終了する前に、次の行を印刷できます。

sed -n '/Line 10/q; p'

答え2

より直感的であると思われる場合は、sed最後の行(以前の/既存の行と一致するsed)を削除する操作のみを実行するパイプラインに2番​​目のパイプを追加できます。

sed "/$START_DATE/q" user.log | sed '$d' > test2.log

関連情報