如何使 awk 命令的输出文件名称唯一?

如何使 awk 命令的输出文件名称唯一?

我正在使用命令:

$output = shell_exec('awk -F, \'NR==FNR{seen[$0]++;next} ($1 in seen)\' uploads/a.txt uploads/b.txt > exports/output.txt');

如何使output.txt每次都有一个唯一的名称?

答案1

以下是从命令行执行此操作的方法:

awk -F, '
BEGIN {
    for (1=3; i<ARGC; i++) {
        split(ARGV[i],parts,/[_.]/)
        num = parts[2]+0
        max = (max > num ? max : num)
        ARGV[i] = ""
    }
    ARGC -= 2
    out = "exports/output_" max+1 ".txt"
    print out
}
NR==FNR { a[$0]++; next }
$1 in a { print > out }
' uploads/a.txt uploads/b.txt exports/output_*.txt

我将让您添加从 PHP 或其他地方调用它所需的任何内容。

上面假设导出目录中的所有文件都是由该脚本生成的,或者遵循相同的output_<number>.txt格式。

我将您的数组名称从 更改为 ,seen[]因为a[]seen[]通常用于识别一组输入中的唯一值(例如在一个文件中),而不是测试某个值是否出现在一个文件中,然后在使用时再次出现在第二个文件中。该名称a[]最常用于此目的。

相关内容