AWK - Как извлечь совпадения, включая часть имени файла, из нескольких файлов

У меня есть 1000 файлов с именем файла, как это:

total_val_count.html? Itemid=5555

с содержанием

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

я хочу вывод, как этот itemid: число с использованием 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

Ни в том, ни в другом случае не выполняется проверка (например, что имя файла успешно разбивается на = знак).

Другие вопросы по тегам