awk 명령의 출력 파일 이름을 고유하게 만드는 방법은 무엇입니까?

awk 명령의 출력 파일 이름을 고유하게 만드는 방법은 무엇입니까?

나는 다음 명령을 사용하고 있습니다 :

$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[]이 목적으로 가장 일반적으로 사용됩니다.

관련 정보