Bash
如何在shell中管理日期
強調文本我有一個包含 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)
有一些方法可以做到這一點: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
, …