我有这个脚本,它用于比较两个文件中的第一个字段,我希望它忽略案例,尝试添加一行IGNORECASE=1;但似乎不起作用,
你能告诉我如何忽略案例吗?
BEGIN {
FS=OFS=";"
}
FNR==NR {
array[$1]=$2
next
}
{
if ($1 in array) {
print $1";" array[$1]";" $2
}
else {
if ($2 in values) {
print $1";" "only_at_" FILENAME ";" $0 " same path as " values[$2]
}
else {
print $1";" "only_at_" FILENAME ";" $0 " no path found"
}
}
values[$2]=$1
}
假设我有
File1
\FILE48bucan-CFAN_Subcommittees;\SERVER24dfsSharedcanCFAN Subcommittees
File2
\file48bucan-CFAN_Subcommittees;/fs8_100g/FILE48/BU/can/CFAN Subcommittees
\FILE58userhome_e;/fs1_100g/FILE58/userhome
预期输出
\FILE48bucan-CFAN_Subcommittees;\SERVER24dfsSharedcanCFAN Subcommittees;/fs8_100g/FILE48/BU/can/CFAN Subcommittees
\MLISFILE58userhome_e;only_at_file2;\MLISFILE58userhome_e;/fs1_100g/MLISFILE58/userhome no path found
使用join
命令非常简单
join -t';' -i -j 1 -o 1.1,1.2,2.2 File1 File2
使用";"作为字段分隔符,不区分大小写地连接字段1上的两个文件,并输出文件1中的第一个和第二个字段以及文件2中的第二个域。
如果你真的想要awk,这将做同样的事情:
awk '
BEGIN {FS=OFS=";"}
NR==FNR {key[tolower($1)] = $0; next}
tolower($1) in key {print key[tolower($1)], $2}
' file1 file2