입력 파일의 후속 행을 다른 파일의 각 행 끝까지 삽입하는 방법은 무엇입니까?

입력 파일의 후속 행을 다른 파일의 각 행 끝까지 삽입하는 방법은 무엇입니까?

로그 출력이 포함된 파일이 두 개 있습니다. 아래 설명된 대로 참여해야 합니다.

첫 번째 파일

Line 1
Line 2
Line 3

두 번째 파일

Need to be placed at the end of Line 1
Need to be placed at the end of Line 2
Need to be placed at the end of Line 3

예상되는 결과:

Line 1 Need to be placed at the end of Line 1
Line 2 Need to be placed at the end of Line 2
Line 3 Need to be placed at the end of Line 3

sed를 사용하여 텍스트/입력 파일을 추가하는 방법을 알고 있지만 파일인 경우 파일의 모든 내용을 삽입하므로 이는 내가 찾고 있는 것이 아닙니다. 어떤 도움이라도 감사하겠습니다 :)

답변1

파일을 한 줄씩 "함께 결합"해야 한다고 가정하면 paste.

paste유틸리티는 하나 이상의 파일에서 입력을 받아 "나란히 붙여넣은" 파일로 구성된 출력을 생성합니다. 이 paste유틸리티는 명령줄에 나열된 파일 열을 생성합니다.

paste first_file second_file

기본 탭 대신 공백을 파일 사이의 구분 기호로 사용하려면 paste다음 -d옵션과 함께 사용하십시오.

paste -d ' ' first_file second_file

paste또한 시스템의 설명서를 참조하십시오.

어떤 의미에서는 paste필드/열 추출과 반대입니다.cut

답변2

사용 awk:

awk 'NR==FNR { arr[NR]=$0; next}{ printf "%s %s\n", arr[FNR], $0 }' first_file second_file

NR==FNR{ arr[NR]=$0arr그러면 첫 번째 파일에 대해 행(레코드 번호)으로 색인화된 배열이 생성됩니다. 이는 awk가 두 번째 파일 읽기를 시작할 때 FNR이 0으로 설정되고 NR은 지금까지 모든 파일에서 읽은 총 레코드이기 때문입니다. 즉, 새 파일 읽기가 시작되면 NR은 0으로 설정되지 않습니다.

next명령문은 awk에게 현재 레코드 처리(행 읽기)를 중지하고 다음 레코드로 이동하도록 지시합니다. 이는 현재 줄에서 더 이상 명령이 실행되지 않음을 의미합니다. 따라서 배열이 생성된 후 첫 번째 파일에서는 arr명령문이 실행되지 않습니다 .printf

다음으로 두 번째 파일의 모든 레코드를 printf인쇄합니다 .arr

나는 아무것도 하지 않았지만약간변경된 명령은 다음에서 가져옵니다.이 답변.

관련 정보