Подтвердить что ты не робот

Номера строк печати, начинающиеся с нуля с помощью awk

Может ли кто-нибудь сказать мне, как печатать номера строк, включая ноль, используя awk?

Вот мой входной файл stackfile2.txt

когда я запускаю следующую команду awk, я получаю actual_output.txt

awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt

тогда как мой ожидаемый результат file.txt

Как напечатать номера строк, начинающихся с нуля (0)?

4b9b3361

Ответ 1

NR начинается с 1, поэтому используйте

awk '{print NR-1 "," $0}'

Ответ 2

Использование awk.

i начинается с 0, i++ увеличит значение i, но вернет исходное значение, которое я удерживал до того, как он будет увеличен.

awk '{print i++ "," $0}' file

Ответ 3

Другой вариант, кроме awk, nl, который позволяет использовать опции -v для установки начального значения и -n <lf,rf,rz> для левой, правой и справа с ведущими нулями. Вы также можете включить -s для разделителя полей, например, -s "," для разделения запятой между номерами строк и вашими данными.

В среде Unix это можно сделать как

cat <infile> | ...other stuff... | nl -v 0 -n rz

или просто

nl -v 0 -n rz <infile>

Пример:

echo "Here 
are
some 
words" > words.txt

cat words.txt | nl -v 0 -n rz

Из:

000000      Here
000001      are
000002      some
000003      words

Ответ 4

Если параметр Perl является опцией, вы можете попробовать следующее:

perl -ne 'printf "%s,$_" , $.-1' file

$_ - линия $. - номер строки