Установка значения FNR в awk - PullRequest
       0

Установка значения FNR в awk

2 голосов
/ 26 января 2011

Есть ли способ изменить значение FNR по умолчанию и затем вывести его на экран.

Я пробовал:

(piped output....) | awk '{FNR=0} {print $0, FNR}'

Я надеюсь, что решение будет взаимозаменяемо с NR.

Ответы [ 4 ]

2 голосов
/ 26 января 2011

Почему бы не объявить свою собственную offset переменную:

(piped output....) |  awk 'BEGIN {offset=2} {print $0, FNR+offset}'
2 голосов
/ 26 января 2011

Да, используя BEGIN:

$ awk 'BEGIN {FNR=2} {print $0, FNR}' file.txt
one 3
two 4
three 5
four 6

Однако, похоже, это не работает, когда ввод не stdin (т.е. задан аргумент файла; по крайней мере, в GNU awk).

1 голос
/ 29 октября 2012

Правильный ответ: НЕ ДЕЛАЙТЕ ЭТОГО !!!! Оставьте FNR в покое, это то, что есть. Если вам нужен какой-то счетчик, представляющий что-то отличное от количества записей, прочитанных до сих пор в текущем файле, просто создайте счетчик, чтобы представить это, не путайтесь со значением встроенных переменных.

0 голосов
/ 31 января 2011
$ awk 'FNR > 2 {print $0, FNR}' yourfilename

FNR не обязательно взаимозаменяем с NR.Если вы указываете несколько файлов, FNR повторно инициализируется до нуля перед каждым файлом.NR нет.

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