我是 UNIX 新手,我需要一些有关head
和验证的帮助tail
。我有一个名为的文本文件data.txt
,其中包含以下数据:
H,20200701
SK
MK
3
这里,标题包含日期,预告片包含文件中存在的行数。
我需要创建一个 shell 脚本来验证标头是否具有当前日期,还需要检查预告片是否具有正确的记录数。
答案1
根据我的假设,这就是你想要的吗?
awk -F"," -v dt=$(date +'%Y%m%d') 'FNR==1{ dte=$2; } { l=$0;}
END { if ( dte==dt && (FNR-1)==l ) print "Yes"; else print "No" } ' data.txt
编辑:
-F","
=> 将字段分隔符设置为“,”逗号。
-v dt=$(date +'%Y%m%d')
=> 执行unix命令以文件中提到的格式获取当前日期并将其存储在“dt”变量中。
NR==1{ dte=$2; }
=> 如果行号为 1 ,则存储文件中的第二个字段(日期)
{ l=$0;}
=> 将每一行存储在名为“l”的变量中。 (这样当最后一行通过时,它将把文件的最后一行存储在“l”中)
END { if ( dte==dt && (NR-1)==l )
=> 在END块中(解析所有行后,检查变量“dte”是否等于“dt”(上一行的日期命令的输出和文件中的日期值)以及最后一行“l”是否与记录总数匹配( NR) 减 1。如果两者都匹配,则打印 yes else No 。