这两个文件的perl单行显示行如何共同?
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
Run Code Online (Sandbox Code Playgroud)
amo*_*mon 27
该-n命令行选项转换代码的东西等同于
while ($ARGV = shift @ARGV) {
open ARGV, $ARGV;
LINE: while (defined($_ = <ARGV>)) {
$seen{$_} .= @ARGV;
print $_ if $seen{$_} =~ /10$/;
}
}
Run Code Online (Sandbox Code Playgroud)
在读取第一个文件时,scalar @ARGV是1.对于每一行,1将附加到%seen条目中.
在读取第二个文件时,scalar @ARGV是0.因此,如果一行在文件1和文件2中,则该条目看起来像1110000(文件1中为3×,文件2中为4×).
我们只希望一次输出公共线.我们这样做的时候共用线file2中是第一次看到,所以$seen{$_}是1110.这表示为正则表达式/10$/:字符串10必须出现在结尾处.
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |