Использование массивов в awk для сопоставления строк

Мне пришлось импортировать мой пакет R в студию Android. Для ex: import com.example.<package name>.R

1
задан Cronzo 27 March 2019 в 14:36
поделиться

1 ответ

Не могли бы вы пройти через объяснение кода, используемого вами. Это может помочь вам понять концепцию массива.

awk '                      ##Starting awk program from here.
NR==FNR{                   ##Checking condition FNR==NR which will be TRUE once first Input_file named file1 is being read.
  a[$1]=$2                 ##Creating an array named a whose index is $1 of current line and value is $2(2nd field) of current line.
  next                     ##next will skip all further statements from here.
}                          ##Closing BLOCK for FNR==NR condition here.
$2 in a{                   ##Checking condition(which will be executed only when 2nd Input_file named file2 is being read.
  print a[$1]              ##Now printing value of array a whose index is $1 of current line.
}                          ##Closing BLOCK for $2  in a condition here.
' file1 file2 >> output    ##Mentioning Input_file names and placing output into output file here.

Дополнительное объяснение концепции Array:

  • Что делает a[$1]=$2?: Это означает, что мы создаем массив с именем a, индекс которого (по которому распознается любой элемент) и его значением является $ 2 (2-е поле текущей строки).
  • Пример a[$1]=$2: Давайте возьмем пример 0_1 apple из 1-го Input_file, где массив будет храниться как a[0_1]=apple, как объяснено выше, его индекс равен 0_1 и значение - яблоко.
  • Что делает условие $2 in a?: Эти операторы на самом деле являются условием, которое проверяет, поступает ли $ 2 текущей строки в массив a (конечно, он проверяет все индексы массив a и сравните эту строку с ними, если они совпадают или нет), если найдено какое-либо совпадение, выведите значение массива a, значение которого равно a[$1]
0
ответ дан RavinderSingh13 27 March 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: