답변:
이를 사용하여 처음 두 줄 을 제거 할 수 있습니다 .
tail -n +3 foo.txt
마지막 두 줄 을 제거합니다 .
head -n -2 foo.txt
(파일이 \n
후자로 끝났다고 가정 )
단지의 표준 사용을 위해 좋아 tail
하고 head
이러한 작업은 파괴되지 않습니다. >out.txt
출력을 새 파일로 리디렉션하려는 경우 사용하십시오 .
tail -n +3 foo.txt >out.txt
케이스가에 out.txt
이미 존재하는,이 파일을 덮어 쓰게됩니다. 출력을에 추가 하려면 >>out.txt
대신에 사용하십시오 .>out.txt
out.txt
첫 번째 N-1 회선을 제외한 모든 회선을 원하면 회선 tail
수로 전화 하십시오 +N
. (숫자는 1부터 시작하여 유지하려는 첫 번째 줄의 번호입니다. 즉, +1은 맨 위에서 시작을, +2는 한 줄을 건너 뛰는 등을 의미합니다).
tail -n +3 foo.txt >>other-document
마지막 N 줄을 건너 뛸 수있는 쉽고 휴대용 방법은 없습니다. GNU head
는 head -n +N
의 대응으로 허용 tail -n +N
합니다. 그렇지 않은 경우 tac
(예 : GNU 또는 Busybox) 꼬리와 결합 할 수 있습니다.
tac | tail -n +3 | tac
이식 가능하게 awk 필터를 사용할 수 있습니다 (예상치 않음).
awk -vskip=2 '{
lines[NR] = $0;
if (NR > skip) print lines[NR-skip];
delete lines[NR-skip];
}'
큰 파일에서 마지막 몇 줄을 제거하려면 잘라낼 조각의 바이트 오프셋을 결정한 다음로 잘라내기를 수행 할 수 있습니다 dd
.
total=$(wc -c < /file/to/truncate)
chop=$(tail -n 42 /file/to/truncate | wc -c)
dd if=/dev/null of=/file/to/truncate seek=1 bs="$((total-chop))"
처음에 파일을 잘라낼 수는 없지만 거대한 파일의 처음 몇 줄을 제거해야 할 경우 내용을 옮길 수 있습니다 .
첫 번째 n 줄을 제거하려면 GNU sed를 사용할 수 있습니다. 예를 들어 n = 2 인 경우
sed -n '1,2!p' input-file
!
평균 "이 간격을 제외". 상상할 수 있듯이 더 복잡한 결과를 얻을 수 있습니다 (예 :
sed -n '3,5p;7p'
3,4,5,7 행이 표시됩니다. 주소 대신 정규식을 사용하면 더 많은 힘을 얻을 수 있습니다.
한계는 줄 번호를 미리 알아야한다는 것입니다.
tail -n +4
4 번째 줄 (처음 3 줄을 제외한 모든 줄)에서 시작하는 파일을 표준으로 출력 할 수는 있지만 해당 파일 head
( head -n -3
마지막 3 줄을 제외한 모든 줄)은 그렇지 않습니다.
다행히도, 당신은 할 것입니다 :
sed '$d' | sed '$d' | sed '$d'
또는:
sed -ne :1 -e '1,3{N;b1' -e '}' -e 'P;N;D'
( sed
크기가 제한된 패턴 공간을 가진 일부 시스템에서는 큰 값으로 확장되지 않습니다 n
).
또는:
awk 'NR>3 {print l[NR%3]}; {l[NR%3]=$0}'
당신의 필요를 분명히 이해하기를 바랍니다.
요청을 완료하는 몇 가지 방법이 있습니다.
tail -n$(expr $(cat /etc/passwd|wc -l) - 2) /etc/passwd
어디 / passwd 파일은 / etc 파일이
큰 파일이 있으면 두 번째 솔루션이 유용 할 수 있습니다.
my1stline=$(head -n1 /etc/passwd)
my2ndline=$(head -n2 /etc/passwd|grep -v "$my1stline")
cat /etc/passwd |grep -Ev "$my1stline|$my2ndline"
\n
" .. 다음 과 같이 ( 음수 (GNU coreutils) 7.4 사용) ... 와 같이 아무것도-n -0
반환 하지 않는 모든 음의 정수에 대해 작동합니다-n 0
. 그러나 후행\n
이 있으면-n -0
인쇄합니다. 로가 기대 될 수있다-
즉. 전체 파일을 인쇄합니다. 따라서 0이 아닌 모든 음수 값에 대해서는-0
작동 합니다. 그러나 후행이 없으면 실패합니다\n