我正在尝试根据给定的日期范围从文件中提取文本。日期范围将由用户决定,但在这里我只使用固定范围。
使用grep
后的文件内容如下:
ronnie@ronnie:~$ zgrep added new.txt
Jul 02 21:03 : update: added Linkin Park/Living Things(2012)/02 - Linkin Park - In My Remains.mp3
Jul 02 21:03 : update: added Linkin Park/Living Things(2012)/03 - Linkin Park - Burn It Down.mp3
Jul 07 10:33 : update: added Linkin Park/Living Things(2012)/04 - Linkin Park - Lies Greed Misery.mp3
Jul 09 07:54 : update: added Linkin Park/Living Things(2012)/04 - Linkin Park - Lies Greed Misery.mp3
现在,假设我想在日期Jul 07
和Jul 09
之间提取文字。所以我使用了以下命令
zgrep added new.txt | sed '/"Jul 09"/,/"Jul 07"/p'
给了我以下输出
Jul 02 21:03 : update: added Linkin Park/Living Things(2012)/02 - Linkin Park - In My Remains.mp3
Jul 02 21:03 : update: added Linkin Park/Living Things(2012)/03 - Linkin Park - Burn It Down.mp3
Jul 07 10:33 : update: added Linkin Park/Living Things(2012)/04 - Linkin Park - Lies Greed Misery.mp3
Jul 09 07:54 : update: added Linkin Park/Living Things(2012)/04 - Linkin Park - Lies Greed Misery.mp3
所以,正如你所看到的那样,它没有考虑我给sed的range
。
我的问题是根据日期范围提取文本的正确方法是什么。
答案 0 :(得分:3)
对于有序输入,
command | sed -n '/^Jul 07/,/^Jul 09/p' inputFile
就足够了。
答案 1 :(得分:1)
你非常接近,你想要的是这个:
zgrep added new.txt | sed -n -e '/Jul 09/,/Jul 07/p'
变化是:
-n
,这意味着除非您明确说明p
-e
请注意,此版本和您的版本仅在行始终按日期/时间排序时才有效。