AWK - 如何从多个文件中提取包含部分文件名的匹配项

AWK - 如何从多个文件中提取包含部分文件名的匹配项

我有 1000 个文件,文件名如下:

总值计数.html?itemid=5555

有内容

total.val={"number":1234,"Validation":YES}

我想要这样的输出商品编号:使用 awk

5555:1234

谢谢

答案1

如果你有 GNU Awk:

$ gawk '
  BEGINFILE{
    split(FILENAME,a,/=/)
  } 
  match($0,/"number":[0-9]+/){
    printf "%s:%d\n", a[2], substr($0,9+RSTART,RLENGTH)
  }
  ' total_val*
5555:1234

或者使用 Perl

$ perl -lnE '$x = (split /=/,$ARGV)[1]; say "$x:$1" if /"number":(\d+)/' total_val*
5555:1234

在这两种情况下都不会进行任何检查(例如,文件名是否在符号上成功分割=)。

相关内容