파일 1

파일 1

열에 데이터가 포함된 두 개의 파일 File-1과 File-2가 있습니다. 아래와 같이 또 다른 파일을 생성하고 해당 데이터에 해당하는 File-2의 첫 번째 열의 데이터를 행 단위로 file-1에 복사하고 싶습니다.

파일 1



A  P
B  Q
C  R


파일 2



5.4  9.0
7.4  11.5
9.4  15.7

산출

A=5.4, B=7.4, C=9.4

데이터의 첫 번째 열에 대해서만 출력이 위와 같은 행 형식이기를 원합니다.
도와주셔서 감사합니다! !
미리 감사드립니다! ! !

답변1

"조인"(질문 제목에 언급됨)은 하나의 데이터 세트를 사용하여 다른 데이터 세트에서 데이터를 추출하는 특정 작업(관계형 조인 작업)입니다. 이는 join유틸리티(또는 짧은 명령)를 사용하여 수행 할 수 있습니다 awk.

당신이 원하는 것은 데이터 추출과 병합입니다. 질문 텍스트에서 이것을 매우 잘 설명합니다.

쉘이 있다고 가정하면 다음 을 사용하여 각 파일 bash의 첫 번째 열 내용을 추출할 수 있습니다 .cut=paste

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2)
A=5.4
B=7.4
C=9.4

각각 (프로세스 대체)은 대체 내의 명령 출력을 읽을 수 <(...)있는 임시 파일의 이름으로 대체됩니다 .cutpaste

그런 다음 다음과 같이 하나의 쉼표로 구분된 줄로 결합할 수 있습니다.

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s -
A=5.4,B=7.4,C=9.4

각 쉼표 뒤에 공백이 필요한 경우 다음을 sed사용할 수 있습니다.

$ paste -d '=' <(cut -d ' ' -f 1 File-1) <(cut -d ' ' -f 1 File-2) | paste -d ',' -s - | sed 's/,/, /g'
A=5.4, B=7.4, C=9.4

질문의 빈 줄은 실제로 데이터 파일의 일부가 아니라고 가정합니다. sed '/^[[:blank:]]*$/d'빈 줄이나 공백 및/또는 탭만 포함된 줄을 제거하는 전처리된 데이터를 사용할 수 있습니다 .

cutpasteand ( man cutand) 매뉴얼도 참조하세요 man paste.

답변2

$ paste file1 file2 | awk '{printf "%s%s=%s", sep, $1, $3; sep=", "} END{print ""}'
A=5.4, B=7.4, C=9.4

관련 정보