我有一个包含 20 个字段的 csv 文件。我想要一个脚本来根据以下几点检查文件是否有效:
- 它需要有 20 个由竖线分隔的字段。
- 20 个字段中的每一个都应匹配一个正则表达式。
- 知道任何正则表达式不匹配的行号和字段号。
例如:
f1|f2|f3|...|f20
1|aaaa|Y|...|2014/06/25
2|bb|Y...|2014/06/25
3|ccc|N...|2014/06/25
regex:
f1 [0-9]
f2 [a-z]{2,4}
f3 [YN]
.
.
.
f20 [1-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]
最好的 shell 工具是什么?有没有类似的脚本?
最佳答案
Unix 系统中最好的工具是 awk
来完成这项工作。您可以使用这样的 awk 命令:
awk 'BEGIN{FS=OFS="|"} NF!=20{print "not enough fields"; exit}
!($1~/^[0-9]$/) {print "1st field invalid"; exit}' file.csv
关于regex - 用于验证 csv 字段的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24419220/