UNIX 쉘을 사용한 vlookup

UNIX 쉘을 사용한 vlookup

이 CSV 파일이 있습니다

ID,col1,col2,col3
1,,,FALSE
2,,,FALSE
3,,,FALSE
4,,,FALSE

ID 열을 사용하여 다른 CSV 파일과 결합하고 싶습니다.

ID,col1
2,AA
3,BB

가져오기(실제 출력은 또 다른 CSV여야 합니다. 여기에 더 읽기 쉽게 하기 위한 예쁜 인쇄물이 있습니다)

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | FALSE |
| 3  | BB   | -    | FALSE |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

마지막 col1으로 비어 있지 않으면 col3비어 있어야 합니다.TRUE

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | TRUE  |
| 3  | BB   | -    | TRUE  |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

일부 Linux 명령줄 유틸리티나 bash 스크립트를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

답변1

밀러를 사용할 수 있습니다(https://github.com/johnkerl/miller). 달리기

mlr --csv join --ul -j ID -f input01.csv then put -S '!is_empty($col1) { $col3 = "TRUE" }' then sort -n ID input02.csv >output.csv

당신은 할 것

+----+------+------+-------+
| ID | col1 | col2 | col3  |
+----+------+------+-------+
| 1  | -    | -    | FALSE |
| 2  | AA   | -    | TRUE  |
| 3  | BB   | -    | TRUE  |
| 4  | -    | -    | FALSE |
+----+------+------+-------+

몇 가지 참고사항:

  • join필드를 사용 ID하여 연결을 실행합니다.
  • putcol1이 비어 있지 않은지 확인하십시오.
  • sortID별로 레코드 정렬

관련 정보