我正在使用命令:
$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[]
最常用于此目的。