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 每次都是唯一的名稱?
以下是從命令行執行此操作的方法:
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[]
最常用於此目的。