我有这个脚本,它用于比较两个文件中的第一个字段, 我希望它忽略案例,试图添加一行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中
\\FILE48\bucan-CFAN_Subcommittees;\\SERVER24\dfs\Shared\can\CFAN Subcommittees
文件2
\\file48\bucan-CFAN_Subcommittees;/fs8_100g/FILE48/BU/can/CFAN Subcommittees
\\FILE58\userhome_e;/fs1_100g/FILE58/userhome
预期输出
\\FILE48\bucan-CFAN_Subcommittees;\\SERVER24\dfs\Shared\can\CFAN Subcommittees;/fs8_100g/FILE48/BU/can/CFAN Subcommittees
\\MLISFILE58\userhome_e;only_at_file2;\\MLISFILE58\userhome_e;/fs1_100g/MLISFILE58/userhome no path found
答案 0 :(得分:1)
使用join
命令
join -t';' -i -j 1 -o 1.1,1.2,2.2 File1 File2
使用“;”作为字段分隔符,不区分大小写地连接字段1上的两个文件,并从file1输出第一个和第二个字段,从file2输出第二个字段。
如果你真的想要awk,这将做同样的事情:
awk '
BEGIN {FS=OFS=";"}
NR==FNR {key[tolower($1)] = $0; next}
tolower($1) in key {print key[tolower($1)], $2}
' file1 file2