【发布时间】:2014-04-13 20:52:15
【问题描述】:
我有以下文件:
DATA;ORA;TESTO log;AMBIENTE;JOBNAME;NOMEAPP;NOMESCRIPT;PARAMETRI;
20130216;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20130427;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20131010;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20130217;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20130217;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20130217;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
20140217;17-02-2014;15:15:13;Devi valorizzare la variabile AMBIENTE con "BCOLL" o "BPROD" ;;
第一行是ISO格式的日期,每行递增。
我想只使用一行带有 grep 或 awk 或 sed 的 shell 脚本来剪切所有早于给定日期的行。
注意带有描述字段的标题。
与 AIX、Linux、Solaris 兼容很重要,所以不要使用 sed -i。
我有这个命令可以提取一些行,但也可以提取第一行。
awk -F ";" '$1 < 20140101 {print $1}' log.csv
与另一个 | awk '!/$1/' log.csv 管道连接它不起作用,可能是因为有多条线路。
使用 sed 管道也不起作用:
sed '/$1/ d' < log.csv
但这个也行不通:
for i in awk -F ";" '$1 < 20140101 {print $1}' log.csv; do awk '!/$i/' log.csv; done
【问题讨论】: