[unix] 두 개의 텍스트 파일을 사이에 구분 기호를 추가하여 결합 하시겠습니까?

cat file1 file2두 개의 텍스트 파일을 결합합니다. 그러나 두 줄 사이에 구분 기호를 추가 ********************************하려면 첫 번째 파일을 열고 끝에 줄을 추가하거나 두 번째 파일을 열고 맨 위에 줄을 추가 한 다음 실행해야합니다 cat명령? 명령을 실행하여 수행 할 수 있습니까?



답변

에서 bashzsh당신은 할 수 있습니다 :

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

또는 mikeserv가 자신의 의견 (모든 셸)에 표시된 것처럼 :

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

Bash에서 David Z는 다음과 같이 말했습니다.

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

파일의 모든 줄 바꿈이 표시됩니다. “separator”뒤에 개행 문자를 원하지 않는 경우 (예 : file2개행 문자로 시작하는 경우 )를 사용할 수 echo -n '****'있으므로 *.


답변

here 에서 cat찾은대로 사용하지 않는 또 다른 방법 은

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

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

그러나 1_CRsed제안한 명령을 주석에 사용 하면 최종 사용을 피할 수 있습니다 .

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


답변

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

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

물론 일반과 같이 세미콜론을 사용하는 대신 여러 줄로 작성할 수 있습니다. 그리고 다른 구분 기호 등으로 다른 파일로 쉽게 확장 할 수 있습니다.


답변

paste:

$ echo '********************************' | paste -sd$'\n' file1 - file2


답변