개행이나 EOF 없이 Linux 텍스트 파일을 수정하는 방법은 무엇입니까?

개행이나 EOF 없이 Linux 텍스트 파일을 수정하는 방법은 무엇입니까?

서식이 지정된 결과를 일부 기존 텍스트 파일에 인쇄하려면 "find" exec 명령을 작성해야 합니다. 어떤 이상한 경우에는 새 줄 대신 이전 줄의 마지막 줄(LF 다음에 CR이 없나요?)에 줄을 추가합니다. 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? 추가하기 전에 텍스트 파일을 수정하는 명령이 있습니까? 도스2유닉스?

답변1

사용:

awk 1 file1 file2 ... > outfile

유일한 cat file1 file2 ... > outfile 문제는 와는 달리, 그 중 하나라도 cat열고 읽을 수 없는 경우, 파일의 나머지 부분을 계속 진행하는 대신 오류와 함께 즉시 종료된다는 것입니다. awk이것이 문제인 경우 대부분의 최신 시스템에서는 다음을 사용하여 이미 제안한 대로 수행할 수 있습니다.file1file2grep ''여기+ -h파일 이름을 생략하는 옵션(단, 이는 악용되는 비표준 기능이라는 점에 유의하세요 grep):

grep -h '' file1 file2 ... > outfile

답변2

한 가지 흥미로운 hack점은 awk를 사용하여 bash 명령의 형식을 지정하고 다음과 같이 bash에 푸시할 수 있다는 것입니다.

awk '{ print "find " $1 " -exec ls {} \;" }' ./source_file | bash

이렇게 하면 명령을 즉시 실행할 수 있습니다. 예를 들면 다음과 같습니다.

find /var -exec ls {} \;
find /home/user1 -exec ls {} \;
# and so on depending on the contents of the ./source_file

도움이 되었기를 바랍니다 :)

관련 정보