强调文本我有一个包含 14000 个日期的文件。我编写了一个脚本来查找最近 5 天的日期,
26/03/2002:11:52:25
27/03/2002:11:52:25
29/03/2002:11:30:41
30/03/2002:11:30:41
26/03/2002:11:30:41
02/04/2002:11:30:41
03/04/2002:11:30:41
04/04/2002:11:30:41
05/04/2002:11:52:25
06/04/2002:11:52:25
假设这是文件,现在我有日期 02/04/2002:11:30:41 作为输出。我想将从 02/04/2002 到文件末尾的日期放入另一个文件中。
start-date = 02/04/2002 (this is my start date)
while [start-date lt end-date] do (while start date is less than end date )
start-date++ ( add one day to start day so if its 2/4/2002 it will become 3/4/2002)
echo $start-date|tee -a file1 (put it in a file)
答案1
有一些方法可以做到这一点:grep,sed,awk,...
您可以通过下列方法之一获取匹配模式的行号:
grep -n pattern -m 1 input | cut -d: -f1
awk '/pattern/{ print NR }' input | head -1
并从该行打印到文件末尾:
$ sed -n "$(awk '/02\/04\/2002:11:30:41/ { print NR }' input | head -1),$ p" input
或者:
$ awk 'NR >= line_number' line_number=$(grep -n 02/04/2002:11:30:41 -m 1 input | cut -d: -f1) input
您还可以使用grep -A
( --after-context
) 或tail
, ...
答案2
如果你可以使用外部辅助工具,请尝试日期工具。它附带一个dgrep
可以执行您想要的操作的命令:
dgrep '>=2002-04-02' -i '%d/%m/%Y' < yourfile
=>
02/04/2002:11:30:41
03/04/2002:11:30:41
04/04/2002:11:30:41
05/04/2002:11:52:25
06/04/2002:11:52:25