한 파일에서 입력을 받아 특정 열의 다른 파일에 추가

한 파일에서 입력을 받아 특정 열의 다른 파일에 추가

두 개의 파일이 있습니다

159
149

그리고

2e49.pem,Apr 29 07:07:13 2017 GMT,275
2f69.pem,Apr 29 07:18:21 2017 GMT,275

275두 번째 파일의 마지막 단어를 첫 번째 파일의 해당 줄로 바꾸고 싶습니다 .

다음과 같아야 합니다.

2e49.pem,Apr 29 07:07:13 2017 GMT,159
2f69.pem,Apr 29 07:18:21 2017 GMT,149

답변1

sed 's/[^,]*$//' file2 | paste -d '\0' - file1

또는 다음을 사용하여 awk:

awk -F , -v OFS=, '{getline $NF < "file1"; print}' file2

답변2

두 번째 파일에서 마지막 쉼표 뒤의 비트를 제거하려면(쉼표 포함):

$ sed 's/,[0-9]*$//' second.txt
2e49.pem,Apr 29 07:07:13 2017 GMT
2f69.pem,Apr 29 07:18:21 2017 GMT

이 출력의 각 줄 끝에 첫 번째 파일을 쉼표로 구분하여 붙여넣습니다.

$ paste -d ',' <( sed 's/,[0-9]*$//' second.txt ) first.txt
2e49.pem,Apr 29 07:07:13 2017 GMT,159
2f69.pem,Apr 29 07:18:21 2017 GMT,149

이는 쉘이 <( ... )( bash및 )를 사용한 ksh93프로세스 대체를 이해한다고 가정합니다.

참고: 이는 Stéphane의 솔루션과 매우 유사 하지만 구분 기호를 sed피하기 위해 쉼표도 제거했으며 프로세스 대체를 사용하고 있습니다.\0paste

관련 정보