Сохранение последнего значения awk как переменной - PullRequest
0 голосов
/ 27 мая 2020

Я использую awk для анализа файла и создания новых файлов (1 ... N) следующим образом.

awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR}' file

Это делает то, что мне нужно, но как сохранить последнее значение для l oop в качестве переменной, в соответствии с приведенным выше? Так, например, если я перейду к 6, я хочу установить переменную = 6.

1 Ответ

3 голосов
/ 27 мая 2020

Вы хотите сохранить последнее значение для l oop, которое, как мне кажется, является количеством полей, если да, попробуйте следующее.

var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR;value=NF} END{print value}' file)


Если вы хотите сохранить значение для номера последней строки (общее количество строк в Input_file), затем попробуйте следующее.

var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR;value=count++} END{print count}' Input_file)

ИЛИ, если ваш awk поддерживает FNR в END блоке, просто выполните:

var=$(awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR} END{print FNR}' Input_file)

Примечание: OP не упомянул об этом, но подумал поместить его здесь, в случае, если создается слишком много файлов, будет разумно использовать команду close в awk, чтобы закрыть их в фоновом режиме, используя close(NR) здесь просто пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...