验证标头和标尾

验证标头和标尾

我是 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 。

相关内容