Bash에서 첫 번째 X 줄을 건너뛴 후 파일 인쇄
거대한 파일이 있고 그 내용을 표시하고 싶다고 가정합니다. 어떻게 하시겠습니까?
그다지 실용적이지 않기 때문에 파일의 전체 내용을 인쇄하고 싶지 않을 것입니다. 일부 선택적인 라인을 인쇄하고 싶을 것입니다. 정규식을 사용하여 파일을 구문 분석하고 일치 항목만 인쇄할 수 있습니다.
이 문서에서는 이를 수행하는 몇 가지 방법을 설명합니다.
head
및 tail
명령을 사용하여 줄 건너뛰기
아래 예에서는 가장 일반적으로 사용되는 5개의 Bash 명령을 사용하여 이를 수행합니다.
tail fileName.txt
head fileName.txt
tail -n fileName.txt # here n is an integer
head -n fileName.txt # here n is an integer
tail +n fileName.txt # prints all lines starting from
# the nth file
tail
명령은 파일의 마지막 10줄을 인쇄하고 head
명령은 파일의 처음 10줄을 인쇄합니다.
tail
명령을 –n
옵션과 함께 사용하면 마지막 n
행이 인쇄됩니다. 반대로 head
명령을 –n
옵션과 함께 사용하면 첫 번째 n
라인이 인쇄됩니다.
여기서 n
은 정수이므로 명령을 실행할 때 n
을 정수로 대체해야 합니다.
다섯 번째 방법은 다소 까다롭습니다. 첫 번째 (n – 1)
줄을 무시하고 그 이후의 모든 줄을 인쇄합니다.
vim
을 사용하여 첫 n
라인 건너뛰기
Vim 편집기를 사용하여 첫 번째 n
줄을 건너뛸 수도 있습니다. Vim은 텍스트 문서를 매우 효율적으로 만들고 변경할 수 있는 콘솔 기반 텍스트 편집기입니다.
Vim을 처음 사용하려면 Vim을 설치해야 합니다. 아래 명령을 사용하십시오.
sudo apt install vim
이제 Vim이 설치되었으므로 Vim을 사용하여 첫 번째 n
줄을 건너뛰는 목적의 비즈니스 부분에 도달했습니다.
중간 파일을 사용하여 수행합니다. 먼저 이전 파일의 내용을 새 파일에 복사합니다. 그런 다음 새 파일의 첫 번째 n
줄을 삭제합니다.
입력 및 출력 리디렉션을 사용하여 한 파일의 내용을 다른 파일로 복사합니다. 운영 체제 과정을 공부했다면 ppfdt
테이블(프로세스 파일 디스크립터 테이블)에 대해 들어봤을 것입니다.
기본적으로 첫 번째 설명자는 stdin
(또는 키보드)을 가리키고 두 번째 설명자는 stdout
(또는 모니터)을 가리키며 세 번째 설명자는 stderror
를 가리킵니다.
추가 이해를 위해 아래 스크립트를 고려하십시오.
cat 0<old_file.txt 1>new_file.txt # copies old file’s contents to new file
위의 명령은 이전 파일의 내용을 읽고 새 파일에 복사합니다. 설명자 0
을 사용하여 읽는 방법과 설명자 1
을 사용하여 쓰는 방법에 주목하십시오.
이 설명자가 혼란스럽다면 뭔가 다른 것이 있습니다. 아래 명령도 작동합니다.
cat <old_file.txt >new_file.txt # copies old file’s contents to new file
cp <old_file.txt >new_file.txt # copies old file’s contents to new file
위의 두 번째 방법에서는 복사 명령(예: cp
)을 사용했습니다. 소스 파일의 경로와 대상 파일의 경로라는 두 가지 인수를 사용합니다.
이제 파일 복사가 완료되었습니다. Vim에서 새 파일을 열고 아래 명령을 사용합니다.
vim new_file.txt
이제 Shift+Esc를 사용하고 Vim에 다음 명령을 입력합니다.
:1,nd # here n is an integer number e.g., 2
위의 명령은 new_file.txt
에서 처음 n
줄을 삭제합니다. 여기서 d
는 삭제를 의미합니다.
sed
를 사용하여 첫 번째 n
라인 건너뛰기
새 파일을 만든 다음 내용을 삭제하는 것은 번거로울 수 있습니다. 또한 이전 파일이 크면 많은 추가 메모리를 소비합니다.
따라서 동일한 작업을 수행하는 더 쉬운 방법을 살펴보겠습니다.
sed 1,nd old_file.txt # here n is an integer
sed
명령은 이전 파일을 수정하지 않는다는 점에 유의해야 합니다. 오히려 첫 번째 n
줄을 제거한 후 단순히 이전 파일의 내용을 표시합니다.