Ответ 1
NR начинается с 1, поэтому используйте
awk '{print NR-1 "," $0}'
Может ли кто-нибудь сказать мне, как печатать номера строк, включая ноль, используя awk?
Вот мой входной файл stackfile2.txt
когда я запускаю следующую команду awk, я получаю actual_output.txt
awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
тогда как мой ожидаемый результат file.txt
Как напечатать номера строк, начинающихся с нуля (0)?
NR начинается с 1, поэтому используйте
awk '{print NR-1 "," $0}'
Использование awk.
i начинается с 0, i++
увеличит значение i, но вернет исходное значение, которое я удерживал до того, как он будет увеличен.
awk '{print i++ "," $0}' file
Другой вариант, кроме 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
Если параметр Perl является опцией, вы можете попробовать следующее:
perl -ne 'printf "%s,$_" , $.-1' file
$_
- линия
$.
- номер строки