두 개의 입력 파일 데이터 처리

두 개의 입력 파일 데이터 처리

두 개의 거대한 입력 파일이 있습니다.

file1탭으로 구분된 3개의 필드가 포함되어 있습니다.

  • field1:UID
  • field2: 사용자 이름
  • field3: 실제 이름

file1:

644     u11496   Real name1
640     u1309    Real name2
641     u3007    Real name3
642     u3030    Real name4
643     u3112    Real name5
54      u0365 Real name6
55      u0613 Real name7
56      u1065 Real name8
57      u1550 Real name9

file2여러 행이 있으며 각 행에는 탭으로 구분된 3개의 필드가 있습니다.

  • field1: 이 경우 무시할 수 있습니다.
  • field2:팀 이름
  • field3: 쉼표로 구분된 사용자 UID가 포함된 열

file2:

2       group1   14,730,748,733,746,761,757,766,735,760,747,738,752,737,758,755,734,754,764,334,335,336,337,41,338,339,39,340
6       group2        14
15      group3  14,667,683,713,730,707,748,733,746,761,680,694,757,766,717,735,760,747,704,738,752,737,715,688,681,700,692,758,755,714,734

file1네 번째 열(탭으로 구분)의 각 사용자 행에 특정 사용자가 속한 그룹 이름을 쉼표로 구분하여 추가 해야 합니다 .

답변1

다음 쉘 스크립트(저는 ksh를 사용하고 있습니다)는 귀하의 요청에 따라 세 번째 파일을 생성합니다.

while read U REST
do
  S="       "   # initialized with a tabulation
  G=""
  grep -E '[        ,]'"$U"'(,|$)' file2.txt | while read X GROUP USRLIST
  do
    G="$G$S$GROUP"
    S=","
  done
  echo "$U  $REST$G"  # tab between $U and $REST
done < file1.txt > file3.txt

file1.txt는

644 u11496  Real name1
640 u1309   Real name2
641 u3007   Real name3
642 u3030   Real name4
643 u3112   Real name5
54  u0365   Real name6
55  u0613   Real name7
56  u1065   Real name8
57  u1550   Real name9
14  u14     Jules Ceasar

file2.txt는

2   group1  14,730,748,733,746,761,757,766,735,760,747,738,752,737,758,755,734,754,764,334,335,336,337,41,338,339,39,340
6   group2  14   
14  group6  667,683,641
15  group3  14,667,683,713,730,707,748,733,746,761,680,694,757,766,717,735,760,747,704,738,752,737,715,688,681,700,692,758,755,714,734

file3.txt를 다음과 같이 얻게 됩니다.

644 u11496  Real name1
640 u1309   Real name2
641 u3007   Real name3      group6
642 u3030   Real name4
643 u3112   Real name5
54  u0365   Real name6
55  u0613   Real name7
56  u1065   Real name8
57  u1550   Real name9
14  u14     Jules Ceasar    group1,group2,group3

관련 정보