强调textI有一个文件包含14000date。 我写了一个脚本find最近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
假设这是文件,现在我有date02/04/2002:11:30:41作为输出。 我想把从2002年4月2日到文件末尾的date放在另一个文件中。
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)
有一些方法可以做到这一点: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 ,…
如果您可以使用外部帮助工具,请尝试使用dateutils 。 它带有一个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