나는 다음 명령을 사용하고 있습니다 :
$output = shell_exec('awk -F, \'NR==FNR{seen[$0]++;next} ($1 in seen)\' uploads/a.txt uploads/b.txt > exports/output.txt');
출력.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[]
이 목적으로 가장 일반적으로 사용됩니다.