다음과 같은 데이터가 포함된 파일이 있습니다 index.txt
.
2013/10/13-121 f19f26f09691c2429cb33456cf64f867
2013/10/17-131 583d3936c814c1bf4e663fe1688fe4a3
2013/10/20-106 0f7082e2bb7224aad0bd7a6401532f56
2013/10/10-129 33f7592a4ad22f9f6d63d6a17782d023
......
CSV 형식의 두 번째 파일에는 다음 데이터가 포함됩니다.
2013/10/13-121, DLDFWSXDR, 15:33, 18:21, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965
2013/10/17-131, DLDFWXDR, 11:05, 15:08, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965
2013/10/20-106, DLSDXDR, 12:08, 13:06, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965
2013/10/10-129, DLXDAE, 15:33, 18:46, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965
이제 ID(첫 번째 열)가 인덱스 파일의 ID와 일치하거나 그 반대일 때 CSV 끝에 MD5SUM을 추가하는 솔루션이 필요합니다. 따라서 파일은 마지막에 다음과 같이 표시됩니다.
2013/10/13-121, DLDFWSXDR, 15:33, 18:21, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, f19f26f09691c2429cb33456cf64f867
2013/10/17-131, DLDFWXDR, 11:05, 15:08, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 583d3936c814c1bf4e663fe1688fe4a3
2013/10/20-106, DLSDXDR, 12:08, 13:06, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 0f7082e2bb7224aad0bd7a6401532f56
2013/10/10-129, DLXDAE, 15:33, 18:46, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 33f7592a4ad22f9f6d63d6a17782d023
답변1
명령을 사용해 보십시오 join
.
join <(sort file1.csv | sed 's/$/,/g') <(sort index.txt | sed 's/ /, /g')
2013/10/10-129, DLXDAE, 15:33, 18:46, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 33f7592a4ad22f9f6d63d6a17782d023
2013/10/13-121, DLDFWSXDR, 15:33, 18:21, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, f19f26f09691c2429cb33456cf64f867
2013/10/17-131, DLDFWXDR, 11:05, 15:08, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 583d3936c814c1bf4e663fe1688fe4a3
2013/10/20-106, DLSDXDR, 12:08, 13:06, Normal, No, 5F2B0121-4F2B-481D-B79F-2DC827B85093/22551965, 0f7082e2bb7224aad0bd7a6401532f56
sort t1 | sed 's/$/,/g'
file1.csv를 정렬하고 쉼표로 접미사를 붙입니다.sort t2 | sed 's/ /, /g'
index.txt 정렬 및 구분 기호 바꾸기- 그런 다음 connect 명령을 사용하십시오(기본값은 첫 번째 필드임).
답변2
awk
파일을 정렬하지 않고 사용 :
awk 'NR==FNR{a[$1]=$2;next}{$(NF+1)=a[$1]}1' index.txt FS=', ' OFS=', ' file.csv
첫 번째 블록 문을 사용하면 첫 번째 파일을 index.txt
배열에 복사할 수 있습니다 a
.
키(파일의 첫 번째 필드)가 배열의 일부인 경우 두 번째 블록 문은 배열의 내용을 a
파일 줄 끝에 추가합니다.file.csv
답변3
또한 시도하십시오 - 첫 번째 파일과 두 번째 파일의 ID가 다른 경우 -:
awk 'NR == FNR {S[$1] = $2; next} {print $0 FS " " S[$1]}' file1 FS="," file2