두 개의 단어 목록 파일이 있습니다. 첫 번째 파일에는 다음이 포함됩니다.
John
Jerry
Jim
두 번째에는 다음이 포함됩니다.
one
two
three
각 파일에는 위의 3개 단어뿐만 아니라 수천 개의 줄이 있습니다. 다음 출력을 얻기 위해 순열을 어떻게 생성할 수 있습니까?
Johnone
Johntwo
Johnthree
Jerryone
Jerrytwo
Jerrythree
..
..
..
답변1
사용앗, 두 번째 파일을 다음과 같이 조심스럽게 배치하십시오.첫 번째범위:
awk '(NR==FNR) { a[NR]=$0 } (NR != FNR) { for (i in a) { print $0 a[i] } }' file2 file1
이는 file2의 모든 내용을 array 에 저장한 a
다음 file1을 (암시적으로) 반복하고 루프의 각 요소에 대해 a
file1의 현재 줄을 인쇄한 다음 file2에 저장된 줄을 인쇄합니다. 순서가 보장되지는 않지만 여전히 유효한 배열입니다.
실행 예시:
$ cat file1
John
Jerry
Jim
Jeff
$ cat file2
one
two
three
four
$ awk '(NR==FNR) { a[NR]=$0 } (NR != FNR) { for (i in a) { print $0 a[i] } }' file2 file1
Johnfour
Johnone
Johntwo
Johnthree
Jerryfour
Jerryone
Jerrytwo
Jerrythree
Jimfour
Jimone
Jimtwo
Jimthree
Jefffour
Jeffone
Jefftwo
Jeffthree
답변2
for w1 in $(cat file1)
do
for w2 in $(cat file2)
do
word=${w1}${w2}
echo ${word} >> permutationfile
done
done
다른 형식 지정 옵션의 경우 명령 printf
대신 사용할 수 있습니다.echo