두 개의 csv 파일을 고려하십시오.
$ cat given.csv
123,John
246,Paul
369,George
987,Ringo
$ cat family.csv
246,McCartney
123,Lennon
987,Starr
369,Harrison
이 줄은 순서가 아니라는 점에 유의하세요!및 기타 awk
도구 를 사용하여 결합된 출력 파일을 가져오는 방법 (순서는 중요하지 않음):grep
bash
123,John,Lennon
246,Paul,McCartney
369,George,Harrison
987,Ringo,Starr
첫 번째 파일에서 루프를 실행 한 for
다음 이를 사용하여 awk
ID를 얻고그 다음에두 번째 파일의 관련 레코드를 grep합니다.Bash에서 이 작업을 수행하는 더 직접적인 방법이 있습니까?? 나는 bash가 종종스마트하고 효과적인 방법아직 익숙하지 않은 텍스트 파일 작업.
답변1
연결 및 정렬:
join -t , <(sort given.csv) <(sort family.csv)
산출:
123. 존 레논 246. 폴 매카트니 369. 조지 해리슨 987 화 링고 스타
grep을 사용하세요:
#!/bin/bash
F1="given.csv"
F2="family.csv"
D="," # delimiter
while IFS="$D" read FIRST_COLUMN REST; do
T="$FIRST_COLUMN$D$REST"
T+="$(grep -oP "^$FIRST_COLUMN\K$D.*" "$F2")" && echo "$T"
done < "$F1"
산출:
123. 존 레논 246. 폴 매카트니 369. 조지 해리슨 987 화 링고 스타