在awk如果我给一个以上的文件作为参数awk,还有两个特殊的变量:
NR=与所有文件中的所有行对应的行号.
FNR=当前文件的行号.
我知道在Perl中,$.对应于NR(所有文件中的行之间的当前行).
FNR在Perl中有没有可与AWK 相媲美的东西?
假设我有一些命令行:
perl -pe 'print filename,<something special which hold the current file's line number>' *.txt
Run Code Online (Sandbox Code Playgroud)
这应该给我输出像:
file1.txt 1
file1.txt 2
file2.txt 1
Run Code Online (Sandbox Code Playgroud) 我知道我可以获取我使用内置变量循环的文件的当前行号$..作为一个实验,我用它来为文件中的每一行添加前缀$.(当前行号)的值.但是,这没有按预期工作.即给出以下文件内容
line one
line two
line three
Run Code Online (Sandbox Code Playgroud)
那么我希望以下代码为每一行添加其行号前缀
for my $line (<FILE>) {
print "$. : $line";
}
Run Code Online (Sandbox Code Playgroud)
但是,它给出了以下输出
3 line one
3 line two
3 line three
Run Code Online (Sandbox Code Playgroud)
在每行前面加上文件中的行数.而不是当前的线.