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
.bar
baz
답변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