두 개의 파일이 있습니다
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
피하기 위해 쉼표도 제거했으며 프로세스 대체를 사용하고 있습니다.\0
paste