谁能告诉我如何使用awk打印包括零的行号?使用awk打印从零开始的行号
这里是我的输入文件stackfile2.txt
当我运行下面的awk命令我得到actual_output.txt
awk '{print NR,$0}' stackfile2.txt | tr " ", "," > actual_output.txt
,而我的预期输出是file.txt
如何打印开始行号零(0)?
谁能告诉我如何使用awk打印包括零的行号?使用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 -v OFS =“,”{print NR-1,$ 0}'文件'可能会更好。 – fedorqui
用awk。
我从0开始,i++
会递增i的值,但返回递增前我保留的原始值。
awk '{print i++ "," $0}' file
+对于比NR-1短一个字符你也可以使用'awk'{print i ++,$ 0}'OFS =,file',但是这会更长。 – Jotne
@Jotne当打高尔夫时,'awk'$ 0 = i ++“,”$ 0''击败它;-) –
如果Perl是一种选择,你可以试试这个:
perl -ne 'printf "%s,$_" , $.-1' 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
是不是'awk'{print NR-1,$ 0}''? –
是的,谢谢安东 – user790049
@ user790049,不要让我们追逐链接来找出问题所在。显示一个小样本输入并告诉我们你想要输出的样子。 http://stackoverflow.com/help/how-to-ask –