*닉스가 있나요?유용이를 통해 두 번째 파일의 콘텐츠가 아직 부분적으로 또는 완전히 사용 가능하지 않은 경우 파일에 콘텐츠를 추가할 수 있습니까(예: 템플릿 파일의 콘텐츠를 두 번째 파일 끝에 추가)?
하나는 사용할 수 있습니다이것grep 솔루션을 사용하고 싶지만 현재로서는 코드가 약간 복잡하고 전용 유틸리티를 선호합니다.
답변1
에서만 이 작업을 수행하고 싶다고 가정해 보겠습니다 template
.data
template
data
template
줄이 있는지 테스트하는 명령은 data
다음과 같습니다.
grep -xF -f template data
template
(수천 개 미만의 행을 포함하는 경우에만 합리적입니다.)
여기에는 다음 옵션이 사용됩니다 grep
.
-x
, 생산라인의 처음부터 끝까지 전체 생산라인을 테스트하는 것이 필수입니다. 이것이 없으면 입력 라인이template
입력 라인과 부분적으로 일치하는 경우data
(예: 라인이 부분적으로 일치하는 경우)hello world
잘못된 긍정이 발생할 수 있습니다 .hello world!
-F
, 정규식 일치 대신 문자열 비교를 사용합니다. 이 옵션이 없으면grep
in의 행은template
정규식으로 처리되며, 정규식에 특수 문자가 포함된 패턴 행이 있는 경우 잘못된 결과가 생성될 수 있습니다.-f template
grep
, 각 줄을template
개별적으로 패턴으로 사용하여data
파일의 모든 줄을 일치시키는 것이 가능합니다 .
여기에 옵션을 추가하면 -q
(조용하게 만들고 grep
일치 항목이 발견되면 즉시 종료) 간단한 테스트에 사용할 수 있습니다.
if ! grep -q -xF -f template data; then
cat template >>data
fi
if
명령문의 본문은 명령이 에서 어떤 라인과도 일치하는 항목을 찾을 수 없는 경우에만 파일의 끝에 파일을 추가합니다 template
.data
grep
template
data