두 개의 텍스트 파일을 병합하고 사이에 구분 기호를 추가하시겠습니까?

두 개의 텍스트 파일을 병합하고 사이에 구분 기호를 추가하시겠습니까?

cat file1 file2두 개의 텍스트 파일을 병합합니다. 하지만 그 사이에 한두 줄 정도의 구분 기호를 추가하려면 ********************************첫 번째 파일을 열고 끝에 줄을 추가해야 할까요, 아니면 두 번째 파일을 열고 맨 위에 줄을 추가해야 할까요? 명령을 실행 하시겠습니까 cat? 단일 명령을 실행하여 수행할 수 있습니까?

답변1

이제 다음을 수행할 수 있습니다 bash.zsh

cat file1 <(echo '********************************') file2

또는 mikeserv가 그의 의견에서 지적한 것처럼 (모든 쉘에서):

echo '********************************' | cat file1 - file2

David Z는 Bash에서 다음과 같이 댓글을 달았습니다.

cat file1 - file2 <<< '********************************'

파일의 모든 줄 바꿈이 표시됩니다. file2이는 "구분 기호" 뒤에 개행 문자를 원하지 않는 경우(예: 개행 문자로 시작하는 경우 ) 작동 echo -n '****'하므로 다음의 개행 문자를 억제합니다 *.

답변2

검색을 사용하지 않는 또 다른 cat방법여기,

awk 'FNR==1{print "******"}{print}' file1 file2 | sed '1d'

마지막 sed 1d파이프는 구분 기호가 있는 첫 번째 줄을 제거하는 것입니다.

sed그러나 제안된 대로 명령을 사용하면 최종 사용을 피할 수 있습니다.1_CR그의 댓글에서.

awk 'FNR==1 && NR!=1 {print "******"}{print}' file1 file2

답변3

여러 명령으로 분할할 수도 있습니다.

cat file1; echo '------------'; cat file2

그룹 명령이나 하위 쉘을 사용하여 파이프하거나 리디렉션할 수 있습니다.

# GROUP COMMAND:
{ cat file1; echo '----------'; cat file2; } | other-command
#                                        ^ final semicolon is part of the syntax!

# SUBSHELL:
( cat file1; echo '----------'; cat file2 ) | other-command

물론 평소처럼 세미콜론을 사용하는 대신 여러 줄에 걸쳐 쓸 수도 있습니다. 그리고 다른 구분 기호 등을 사용하여 다른 파일로 쉽게 확장할 수 있습니다.

답변4

find매개변수 -printf및 를 -exec조합하여 사용하면 파일 cat내용 앞뒤에 텍스트를 배치할 수 있습니다.

find . -type f -name "*.txt" -printf "/n This is before! \n" -exec cat {} \; -printf "/n This is after! /n" >> output.txt

관련 정보