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


16

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

답변:


17

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

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

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

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

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

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

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


7
당신은 같은 쉘에서 같은 일을 할 수 있습니다echo '**********************' |cat file - file2
mikeserv

감사. cat은 항상 파일 사이에 새로운 줄을 내재적으로 추가합니까?
오전

1
@Tim- echo항상 그렇습니다 .
mikeserv

1
@ printf 'no newline' | tee file1 >file2; printf 'no newline' | cat file1 - file2
Tim-

1
@Tim 당신은 ...<(echo -n '****')줄 바꿈을 억제하는 데 사용할 수 있습니다 . cat파일에 하나가있을 때만 표시합니다 (끝에).
Anthon

6

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

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

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

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

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

1
패턴을 다음 sed과 같이 변경 하면 피할 수 있습니다.awkFNR == 1 && NR != 1
iruvar

10K에 도달 한 것을 축하합니다!
G-남자 '는 분석 재개 모니카'말한다

@ G-Man, 고마워. 축하드립니다. :)
Ramesh

이를 통해 파일 패턴의 정규식을 쉽게 확장 할 수 있습니다.
Paul

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

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


2

paste:

$ echo '********************************' | paste -sd$'\n' file1 - file2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.