我需要使用 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
):
sed "/$START_DATE/q" user.log | sed '$d' > test2.log