답변:
미리 줄 수를 알 필요가 없습니다. tail
그리고 head
각각 파일의 시작 또는 끝에서의 오프셋 (offset)를 취할 수 있습니다.
이 파이프는 파일의 두 번째 줄에서 시작하여 (첫 번째 줄을 건너 뛰고) 마지막 줄에서 멈추고 (마지막 줄을 건너 뜁니다). 시작 또는 끝에서 둘 이상의 줄을 건너 뛰려면 그에 따라 숫자를 조정하십시오.
tail -n +2 file.txt | head -n -1
다른 방법으로 진행하면 물론 동일하게 작동합니다.
head -n -1 file.txt | tail -n +2
방법은 다음과 awk
같습니다.
awk 'NR>2 {print t} {t=$0}'
또한 다른 방법 sed
:
sed '1d;x' file.txt
x
고급 sed
명령 인 경우 현재 행을 이전 행으로 전환합니다. 현재 행이 버퍼로 이동하고 이전이 화면으로 이동하는 등 sed
한 줄씩 스트림 을 처리 하는 동안 (첫 번째 행이 비어있는 이유).
awk
각 단계 (라인)의 솔루션은 현재 라인을 변수에 넣고 두 번째 라인이 지나간 후에 만 인쇄를 시작합니다. 따라서 화면의 두 번째 줄에서 마지막 줄까지 줄이 연속적으로 나타납니다. 마지막 행은 변수에 있기 때문에 생략되고 다음 단계에서만 인쇄되어야하지만 모든 단계가 이미 실행되어 화면에 해당 행이 표시되지 않습니다.
같은 아이디어 perl
:
perl -ne 'print $t if $.>2 ; $t=$_' file.txt
$.
줄 번호와 $_
현재 줄을 나타냅니다. 구조의
perl -n
지름길이며 인라인 스크립트입니다.while(<..>) {..}
-e
파이썬에서 나는 이것을 좋아할 것입니다.
#!/usr/bin/python3
import re
import sys
file = sys.argv[1]
with open(file, 'r') as f:
L = []
for line in f:
line = re.sub(r'\n', r'', line)
L.append(line)
print('\n'.join(L[1:-1]))
위 코드를 파일에 붙여넣고 이름을로 지정하십시오 script.py
. 확인할 파일에 대해 스크립트를 실행하십시오.
python3 script.py /path/to/the/file
예:
$ cat file
foo
apple
banana
bar
$ python3 script.py file
apple
banana
head -n -1
의 첫 번째 줄과 마지막 줄을 제거합니다.txt
.