Как добавить инкрементную строку в начало файла с помощью awk

Я пытаюсь добавить все большее число к началу каждой строки в файле вместе со строкой, используя awk.

Вот что я пытаюсь сделать:

awk 'BEGIN { for ( i=1 ; i <= 60 ; i++ ) print "\""i"\""  "\""$0 }'
    test1.vdf > test2.vdf

Однако выполнение этого только дает мне число и игнорирует строку в файле.

1
nl ja de
man nl ......
добавлено автор William Pursell, источник
Возможно, вы изначально путали себя, читая свой собственный титул?
добавлено автор Bill Woodger, источник
или cat -n , хотя nl имеет ряд полезных опций для вещей, более удобных, чем просто нумерация строк ...
добавлено автор twalberg, источник

1 ответы

BEGIN is a "special pattern" which is only processed before the first record

Если вы перенесите свою попытку на более вероятную область, вы обнаружите, что вам не нужно «зацикливаться», поскольку стандартный процесс «одна запись за раз» будет делать это за вас.

Попробуй это:

{
    print "\""++i"\"" "\""$0
}

Я не знаю, является ли это то, что вы хотите точно, но это в основном ваш код.

2
добавлено
Я знаю, что вы просто пытаетесь использовать как можно больше кода OPs, чтобы он мог видеть изменения в вашем коде, но для преимущества OPs - вы можете просто распечатать NR вместо ++ i.
добавлено автор Ed Morton, источник
Да, это отличная идея, я был обеспокоен тем, где «60» вошли в нее в оригинале. Тем не менее, NR будет лучше идентифицировать «переполнение/нехватку» (если таковой был), а не сохранять свой собственный счет.
добавлено автор Bill Woodger, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru