앞/사이/뒤에 여러 개의 고정 줄이 있는 "cat" 파일을 포함하는 방법은 무엇입니까?

앞/사이/뒤에 여러 개의 고정 줄이 있는 "cat" 파일을 포함하는 방법은 무엇입니까?

cat저는 여러 개의 고정 라인이 있는 여러 파일을 처리할 수 있는 bash one-liner를 찾고 있습니다 .

파일 1.txt:

file1 line 1
file1 line 2

파일 2.txt

file2 line 1
file2 line 2

그런 다음 나는 다음과 같은 것을 찾고 있습니다.

cat-with-strings foo file1.txt bar file2.txt baz

생산량

foo
file1 line 1
file1 line 2
bar
file2 line 1
file2 line 2
baz

표준 Linux 도구(sed, awk, cat 등)를 사용하여 bash 한 줄에서 이를 수행하는 방법아니요, 또는 ? 저장할 파일을 만드세요 foo.barbaz

답변1

내 휴대전화로 이 내용을 입력했기 때문에 개략적이고 테스트되지 않은 답변에 대해 사과드립니다.

물론 모든 것을 하나의 파일인 것처럼 연결(cat)할 수 있습니다.

cat <( echo foo ) file1.txt <( echo bar ) file2.txt <( echo baz )

답변2

sh -c 'while [ $# -gt 0 ] ; do echo "$1" ; cat "${2:-/dev/null}" ; shift 2 2>/dev/null; done' - foo file1 bar file2 baz

일반적으로 이것을 라인으로 요청하는 것은 매우 어리석은 일입니다. 쉘 함수나 파일에 넣으면 그것이 라인인지 누가 신경 쓰나요?

답변3

모든 Unix 시스템의 모든 쉘에서 하나의 명령으로 awk를 사용하십시오.

$ awk 'FNR==1{print x} 1; END{print x}' x='foo' file1 x='bar' file2 x='baz'
foo
file1 line 1
file1 line 2
bar
file2 line 1
file2 line 2
baz

관련 정보