열에 데이터가 포함된 두 개의 파일 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
각각 (프로세스 대체)은 대체 내의 명령 출력을 읽을 수 <(...)
있는 임시 파일의 이름으로 대체됩니다 .cut
paste
그런 다음 다음과 같이 하나의 쉼표로 구분된 줄로 결합할 수 있습니다.
$ 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'
빈 줄이나 공백 및/또는 탭만 포함된 줄을 제거하는 전처리된 데이터를 사용할 수 있습니다 .
cut
paste
and ( man cut
and) 매뉴얼도 참조하세요 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