比较文件 Unix
comparing files Unix
我有 2 个脚本 file.txt
和 file2.txt
file1.txt
name|mandatory|
age|mandatory|
address|mandatory|
email|mandatory|
country|not-mandatory|
file2.txt
gabrielle||nashville|gabrielle@outlook.com||
这些是我的确切数据文件,在file1中column1是字段名,column2是注意file2中该字段是否不应该为空。
在文件 2 中,数据位于由 | 分隔的单行中。
file1 中提到的强制性年龄在 file2 中不存在[这是一行],这也是我需要的输出。
预期输出:
age mandatory
我得到的代码是 file2 的格式与 file1 的格式相同,其中 mandatory 被替换为 field2 数据。
awk -F '|' '
NR==FNR && =="mandatory" {m[]++}
NR>FNR && =="" && m[] {printf "%s mandatory\n", }
' file1.txt file2.txt
您必须遍历字段 for(... i <= NR ...)
。
awk -F '|' '
NR==FNR { name[NR]=; man[NR]= }
NR!=FNR {
for (i = 1; i <= NR; ++i) {
if ($i == "" && man[i] == "mandatory") {
printf("Field %s is mandatory!\n", name[i]);
}
}
}
' file1.txt file2.txt
我有 2 个脚本 file.txt
和 file2.txt
file1.txt
name|mandatory|
age|mandatory|
address|mandatory|
email|mandatory|
country|not-mandatory|
file2.txt
gabrielle||nashville|gabrielle@outlook.com||
这些是我的确切数据文件,在file1中column1是字段名,column2是注意file2中该字段是否不应该为空。
在文件 2 中,数据位于由 | 分隔的单行中。 file1 中提到的强制性年龄在 file2 中不存在[这是一行],这也是我需要的输出。
预期输出:
age mandatory
我得到的代码是 file2 的格式与 file1 的格式相同,其中 mandatory 被替换为 field2 数据。
awk -F '|' '
NR==FNR && =="mandatory" {m[]++}
NR>FNR && =="" && m[] {printf "%s mandatory\n", }
' file1.txt file2.txt
您必须遍历字段 for(... i <= NR ...)
。
awk -F '|' '
NR==FNR { name[NR]=; man[NR]= }
NR!=FNR {
for (i = 1; i <= NR; ++i) {
if ($i == "" && man[i] == "mandatory") {
printf("Field %s is mandatory!\n", name[i]);
}
}
}
' file1.txt file2.txt