什么是Awk'的Ruby等价物;s FNR==NR?

什么是Awk'的Ruby等价物;s FNR==NR?,ruby,awk,command-line,Ruby,Awk,Command Line,Awk具有内置变量FNR和NR,用于从当前文件读取的记录数(通常为行数)和总数 在awk中,通常有: $ awk 'FNR==NR {first file lines; next } {process remaining lines } f1 f2 通常,f1包含确定如何处理剩余文件的值。(关键词、行号等) Ruby具备一种出色的文本处理语言的特质。Ruby有$。与awk的NR等价物是什么?Ruby有(别名为$FYI GNU awk有XML解析器,CSV解析器正在开发中。forecast AF

Awk具有内置变量
FNR
NR
,用于从当前文件读取的记录数(通常为行数)和总数

在awk中,通常有:

$ awk 'FNR==NR {first file lines; next } {process remaining lines } f1 f2
通常,
f1
包含确定如何处理剩余文件的值。(关键词、行号等)


Ruby具备一种出色的文本处理语言的特质。Ruby有
$。
与awk的
NR
等价物是什么?

Ruby有(别名为
$FYI GNU awk有XML解析器,CSV解析器正在开发中。forecast AFAIK中没有JSON。有关其他格式,请参阅gawk的解析器。
$ awk '{print FNR,NR,$0}' f1 f2
1 1 line 1
2 2 line 2
3 3 line 3
1 4 LINE 1
2 5 LINE 2

$ ruby -lane 'puts [ARGF.file.lineno, $., $_].join(" ")' f1 f2 
1 1 line 1
2 2 line 2
3 3 line 3
1 4 LINE 1
2 5 LINE 2
$ echo '123' | awk '1' - <(echo 456)
123
456
$ echo '123' | awk '1' <(echo 456) -
456
123

$ echo '123' | ruby -lane 'puts $_' - <(echo 456)
123
456
$ echo '123' | ruby -lane 'puts $_' <(echo 456) -
456
123
$ echo "1
2
44
2017" >f1
$ seq 10000 | awk '{print "Line", $1}' >f2
$ awk 'FNR==NR{ln[$1]; next} 
       FNR in ln'    f1 f2
$ ruby -lane 'BEGIN{h=Hash.new}
              if $<.file.lineno == $<.lineno
                 h[$F[0].to_i]=true
                 next
              end
              puts $_ if h[$<.file.lineno]' f1 f2
Line 1
Line 2
Line 44
Line 2017