Как я могу передать предопределенную переменную в функцию столбца awk? - PullRequest
1 голос
/ 12 апреля 2019

Я хотел бы передать предопределенную переменную в качестве номера столбца для сценария awk. Я удалил ненужные биты, и ниже приведен пример того, что я хотел бы сделать. Ниже приведена часть того, что я пробовал до сих пор.

Причина: это полудлинный сценарий, который в настоящее время работает, хотя я хотел бы определить столбцы в начале сценария, поскольку это значительно упростит обновление сценария при изменении столбцов.

Я бы хотел, чтобы переменная "state" передавалась идентификатору столбца awk, например:

#/bin/bash

export state='$6'


cat ~/file | awk -v column="$state" 'state!="FAILED"'

Запуск приведенного выше кода приводит к появлению строк, в которых столбец 6 действительно имеет значение «СБОЙ», поэтому должно быть что-то не так. Пока awk '$6!="FAILED"' работает как положено

Разные вещи, которые я пробовал до сих пор:

  1. определяя $ state как 6, а не как $ 6, и включая $ в команду awk! =.
  2. awk '{ENVIRON["state"]!="FAILED"}', с теми же модификациями, что и 1

1 Ответ

1 голос
/ 12 апреля 2019

Это должно работать:

state=6
cat ~/file | awk -v column="$state" '$column != "FAILED"'

$var в awk получит поле, указанное значением переменной var. Итак, $NF получит последнее поле. Обратите внимание, что переменная awk здесь column, , а не state.

Например:

% seq 1 20 | paste - - - -
1   2   3   4
5   6   7   8
9   10  11  12
13  14  15  16
17  18  19  20
% seq 1 20 | paste - - - - | awk -v column=3 '{print $column}'
3
7
11
15
19
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...