Text AWK比较两个文件,匹配第一个字段,粘贴数据,等等

Text AWK比较两个文件,匹配第一个字段,粘贴数据,等等,text,awk,Text,Awk,我有这个脚本,它用来比较两个文件的第一个字段, 我希望它忽略案例,尝试添加一行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

我有这个脚本,它用来比较两个文件的第一个字段, 我希望它忽略案例,尝试添加一行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
}
假设我有

文件1

文件2

预期产量

\\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
这个命令非常简单

使用“;”作为字段分隔符,不区分大小写地连接字段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

请编辑您的问题,以包括示例输入和所需输出。也就是说,最简单的解决方案(如果我理解您的问题)是使用
toupper($2)
转换初始输入,然后在
else
中进行比较,比如
if(toupper($2)的值)
。祝你好运。从
gawk
man
页面:“注意:数组订阅不受影响。”因此Sheller的建议是可行的。我添加了更多信息,请为“仅在”案例添加示例输出。此外,通过使示例输入更简单(尤其是更短),您可以让更多的人处理您的问题。祝你好运
\\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
join -t';' -i -j 1 -o 1.1,1.2,2.2 File1 File2
awk '
   BEGIN {FS=OFS=";"} 
   NR==FNR {key[tolower($1)] = $0; next} 
   tolower($1) in key {print key[tolower($1)], $2}
 ' file1 file2