Linux : 파일 사이에 구분 기호가있는 고양이


28

Linux에서 cat *를 입력하면 다음과 같은 결과가 나타납니다.

파일 1에서 1 호선
파일 1의에서 2 호선
파일 2에서 1 호선
파일 3에서 1 호선
2 호선 파일 3에서
파일 3에서 세 번째 줄

내가 원하는 것은 파일 사이에 구분 기호를 표시하는 것입니다. 이런 식으로 뭔가 :
1 호선 파일 1에서
파일 1에서 2 호선
XXXXXXXXXXXX의
1 호선 파일 2에서
XXXXXXXXXXXX
호선 파일 3에서
2 호선 파일 3에서
파일 3에서 세 번째 줄

하나의 라이너로 쉽게 타이핑 할 수 있습니까?

답변:


40

구분 기호의 모양이 너무 까다 롭지 않은 경우 :

tail -n +1 *

대단해! 당신의 명령이 tail -n 1 *과 어떻게 다른지 놀랍습니다. 매뉴얼 페이지에서 +1의 효과에 대한 언급을 찾을 수 없습니다.
Daniele

1
tail -n X마지막 X 줄을 보여줍니다. tail -n +X1부터 시작하여 X 행에서 시작합니다. 즉, 첫 번째 (X-1) 행을 제외한 모든 행을 표시합니다.
Gilles 'SO- 악마 그만'

아, 이제 맨 페이지에서 볼 수 있습니다. 나는 그것을 간과했다. 감사합니다.
Daniele

이 기사에는 비슷한 솔루션이 있습니다. everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime

나쁜 의견에 대해 죄송하지만 이것은 굉장합니다. 감사합니다, @Gilles
Mike D


11
awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *

또는

awk 'FNR==1 {print "XXXXXX", FILENAME, "XXXXXX"}{print}' *

또는

awk 'FNR==1 {print "XXXXXX File no. " ++count, "XXXXXX"}{print}' *

배쉬 만 사용 (아니오 cat) :

for file in *; do printf "$(<"$file")\nXXXXXXXXXXXX\n"; done

편집하다:

AWK 4 :

awk 'BEGINFILE {print "XXXXXXXXXXXX"}{print}' *

이 답변의 다른 예제와 같은 구분 기호를 사용할 수 있습니다. 각 파일 끝에 구분 기호를 사용하려면로 변경 BEGINFILE하십시오 ENDFILE. 실행 순서를 암시하는 것이 아니라 조건부이므로 스크립트의 시작 부분에 계속 나타날 수 있습니다.


2
어색한 +1! 나는 그것이 무엇이든 할 수 있다고 맹세합니다.
brad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.