콘텐츠가 파일에 없는 경우(부분적인 경우에도) 파일에 콘텐츠를 추가하는 유틸리티입니다.

콘텐츠가 파일에 없는 경우(부분적인 경우에도) 파일에 콘텐츠를 추가하는 유틸리티입니다.

*닉스가 있나요?유용이를 통해 두 번째 파일의 콘텐츠가 아직 부분적으로 또는 완전히 사용 가능하지 않은 경우 파일에 콘텐츠를 추가할 수 있습니까(예: 템플릿 파일의 콘텐츠를 두 번째 파일 끝에 추가)?

하나는 사용할 수 있습니다이것grep 솔루션을 사용하고 싶지만 현재로서는 코드가 약간 복잡하고 전용 유틸리티를 선호합니다.

답변1

에서만 이 작업을 수행하고 싶다고 가정해 보겠습니다 template.datatemplatedata

template줄이 있는지 테스트하는 명령은 data다음과 같습니다.

grep -xF -f template data

template(수천 개 미만의 행을 포함하는 경우에만 합리적입니다.)

여기에는 다음 옵션이 사용됩니다 grep.

  • -x, 생산라인의 처음부터 끝까지 전체 생산라인을 테스트하는 것이 필수입니다. 이것이 없으면 입력 라인이 template입력 라인과 부분적으로 일치하는 경우 data(예: 라인이 부분적으로 일치하는 경우) hello world잘못된 긍정이 발생할 수 있습니다 .hello world!
  • -F, 정규식 일치 대신 문자열 비교를 사용합니다. 이 옵션이 없으면 grepin의 행은 template정규식으로 처리되며, 정규식에 특수 문자가 포함된 패턴 행이 있는 경우 잘못된 결과가 생성될 수 있습니다.
  • -f templategrep, 각 줄을 template개별적으로 패턴으로 사용하여 data파일의 모든 줄을 일치시키는 것이 가능합니다 .

여기에 옵션을 추가하면 -q(조용하게 만들고 grep일치 항목이 발견되면 즉시 종료) 간단한 테스트에 사용할 수 있습니다.

if ! grep -q -xF -f template data; then
    cat template >>data
fi

if명령문의 본문은 명령이 에서 어떤 라인과도 일치하는 항목을 찾을 수 없는 경우에만 파일의 끝에 파일을 추가합니다 template.datagreptemplatedata

관련 정보