답변:
head
그리고 tail
해결책소스 파일이 호출 ~/a
되고 삽입 될 파일이 호출되었다고 가정하십시오 ~/b
. 병합 된 파일을 ~/c
다음에 넣습니다 .
head -n 5 ~/a > ~/c
cat ~/b >> ~/c
tail --lines=+6 ~/a >> ~/c
~/
는 /home/user
디렉토리 이름의 단축입니다a
을 새로 작성된 파일로 복사 합니다.c
b
에 추가합니다.c
a
은 6 행에서 시작하여 파일 끝까지 파일을 추가합니다.c
해당 파일을 확인한 후 c
파일에서 올바르게 병합 a
하고 b
우리는 이름을 바꿀 수 있습니다 c
에 a
사용 :
mv ~/c ~/a
mv
파일 c
을 파일 로 옮깁니다 a
. 데이터는 물리적으로 이동되지 않습니다. 파일 이름이 변경되어 시간이 절약됩니다.가장 쉬운 도구는 다음과 같습니다 sed
. 삽입하려면 b.txt
로 a.txt
5 선 후, 당신은 쓸 수 있습니다 :
sed '5r b.txt' a.txt
sed
인수 ( a.txt
) 로 지정된 파일을 한 줄씩 읽습니다 . 모든 행은 명령에 의해 변경되지 않는 한 입력에 나타난 그대로 출력에 재현됩니다.
이 5
다음 명령이 실행되어야하는 어드레스 (행 번호)이다. 우리가 사용하는 명령 r
은 파일 이름을 인수 (여기 b.txt
)로 가져 와서 완전히 읽고 현재 줄 다음에 출력에 삽입합니다.
이 sed
명령 줄은 파일에 쓰지 않고 터미널로만 출력을 인쇄합니다. Bash의 출력 리디렉션을 사용하여 파일을 입력 파일이 아닌 새 파일로 리디렉션 할 수 있습니다.
sed '5r b.txt' a.txt > c.txt
또는 직접 외부 입력 파일을 수정할 수 있습니다 a.txt
사용하여 sed
의를 -i
스위치 ( "제자리"에 대한). 로 작성 -i.bak
하면 접미사가있는 원본 입력 파일의 백업 사본이 .bak
먼저 작성됩니다.
sed -i '5r b.txt' a.txt
예를 들면 :
$ cat a.txt
January
February
March
April
May
October
November
December
$ cat b.txt
June
July
August
September
$ sed '5r b.txt' a.txt
January
February
March
April
May
June
July
August
September
October
November
December
(@ByteCommander의 우아한 예제 재사용 :)
awk '1; NR==5 {system("cat b.txt")}' a.txt