나는 두 파일의 합을 구하고 shell script
다음과 같은 결과를 얻는 프로그램을 작성하고 싶습니다.A
B
문서 A
:
user_a tel_a addr_a
user_b tel_b addr_b
문서 B
:
process_1 user_a
process_2 user_a
process_3 user_b
결과:
user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b
어떻게 해야 하나요? awk
아니면 다른 것입니까?
답변1
join
...
join -1 2 -2 1 FileB FileA
산출
user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b
입력 파일은 키 필드별로 정렬되어야 합니다. 예제 파일은 이미 정렬되어 있으므로 필요하지 않지만 다음과 같이 정렬을 병합할 수 있습니다.
join -1 2 -2 1 <(sort -k2 FileB) <(sort FileA)
답변2
join
및 는 모든 곳에서 사용할 수 없으므로 paste
(예를 들어 내 BusyBox 기반 시스템에는 없음) 요청에 따라 awk를 사용하여 수행하는 방법은 다음과 같습니다.
awk 'BEGIN {
while( (getline < "fileA") > 0) A[$1]=$2 OFS $3 # read fileA into the array A
close("fileA")
} {
print $2, $1, A[$2]
}' fileB