예: 파일이 있고 01.txt
이 02.txt
파일의 데이터를 새 파일에 추가해야 합니다 new.txt
.
01.txt
뒤에 있는 파일을 기반으로 데이터를 추가해야 합니다 02.txt
.
이전에는 파일( 01.txt
02.txt
)의 첫 번째 줄과 마지막 줄만 삭제한 다음 새 파일에 추가해야 했습니다.
UNIX를 사용하여 이를 어떻게 달성합니까?
답변1
또 다른 방법:
for file in 01.txt 02.txt; do sed '1d;$d;' "$f"; done > output
이는 많은 파일을 연결해야 하는 경우 특히 유용합니다.
for file in *.txt; do ...
셸 확장을 사용할 수도 있습니다.
for file in 0{1,2}.txt; do ...
답변2
sed를 사용하여 첫 번째 줄과 마지막 줄을 삭제할 수 있습니다.
sed -e '1d' -e '$d' file1 > output
sed -e '1d' -e '$d' file2 >> output
sed -e '1d' -e '$d' file3 >> output
답변3
파일의 첫 번째 줄을 제외한 모든 내용을 인쇄하는 쉬운 방법은 다음과 같습니다.tail
:
tail -n +2 01.txt
파일의 마지막 줄을 제외한 모든 내용을 인쇄하려면 다음을 사용하십시오.head
:
head -n -1 01.txt
따라서 이 모든 것을 하나로 모아서 첫 번째 줄과 마지막 줄을 제외한 모든 항목을 인쇄하고 01.txt
다른 02.txt
이름으로 저장하려면 다음을 03.txt
사용할 수 있습니다.서브쉘위 명령의 출력을 두 파일로 병합합니다.
(tail -n +2 01.txt | head -n -1; tail -n +2 02.txt | head -n -1) > new.txt
답변4
GNU 사용 sed
:
sed -s '1d;$d' ./*.txt > output
*.txt
참고: 출력 파일의 이름이 와일드카드 패턴( 위) 과 일치하지 않는지 확인하려고 합니다 . 그렇지 않으면 다음과 같이 작성해야 합니다.
sed -sn '1d;$d;w output.txt' ./*.txt
( output.txt
이전에 존재하지 않았다고 가정).