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