다음은 TERMINATE
파일 끝까지 일치하는 줄을 인쇄 합니다.
sed -n -e '/TERMINATE/,$p'
설명 : -n
의 비활성화 기본 동작 sed
그것에 그 스크립트를 실행 한 후, 각 라인을 인쇄, -e
스크립트를 나타내는 sed
, /TERMINATE/,$
일치하는 첫 번째 행을 의미하는 어드레스 (행)의 범위의 선택이다 TERMINATE
(파일의 끝 (그렙 등) 정규식 $
) 이며 p
현재 행을 인쇄하는 인쇄 명령입니다.
이것은 TERMINATE
파일 끝까지 줄 일치를 따르는 줄에서 인쇄 됩니다.
(일치하는 줄을 제외하고 일치하는 줄부터 EOF로)
sed -e '1,/TERMINATE/d'
Explained : 1,/TERMINATE/
는 TERMINATE
정규식과 일치하는 첫 번째 행에 대한 입력의 첫 번째 행을 의미하는 주소 (행) 범위 선택 이며 d
현재 행을 삭제하고 다음 행으로 건너 뛰는 delete 명령입니다. 으로 sed
기본 동작이 라인을 인쇄하는 것입니다, 그것은 이후의 라인을 인쇄 할 수 TERMINATE
입력의 끝.
편집하다:
전에 줄을 원한다면 TERMINATE
:
sed -e '/TERMINATE/,$d'
그리고 TERMINATE
단일 패스에서 두 개의 다른 파일에서 전후 에 두 줄을 모두 원한다면 :
sed -e '1,/TERMINATE/w before
/TERMINATE/,$w after' file
이전 및 이후 파일에는 종료 행이 포함되므로 다음을 사용해야합니다.
head -n -1 before
tail -n +2 after
편집 2 :
sed 스크립트에서 파일 이름을 하드 코딩하지 않으려면 다음을 수행하십시오.
before=before.txt
after=after.txt
sed -e "1,/TERMINATE/w $before
/TERMINATE/,\$w $after" file
그러나 $
마지막 줄 의 의미 를 피해야 쉘이 $w
변수 를 확장하려고 시도하지 않습니다 (이제 스크립트 주위에 작은 따옴표 대신 큰 따옴표를 사용합니다).
sed가 파일 이름이 끝나는 것을 알 수 있도록 스크립트에서 파일 이름 뒤에 새 줄이 중요하다는 것을 잊어 버렸습니다.
편집 : 2016-0530
세바스찬 클레멘트 (Sébastien Clément)는 "하드 코딩 TERMINATE
된 변수를 어떻게 바꾸 겠습니까?"
일치하는 텍스트에 변수를 만든 다음 이전 예제와 같은 방식으로 수행합니다.
matchtext=TERMINATE
before=before.txt
after=after.txt
sed -e "1,/$matchtext/w $before
/$matchtext/,\$w $after" file
이전 예제와 일치하는 텍스트에 변수를 사용하려면
## Print the line containing the matching text, till the end of the file:
## (from the matching line to EOF, including the matching line)
matchtext=TERMINATE
sed -n -e "/$matchtext/,\$p"
## Print from the line that follows the line containing the
## matching text, till the end of the file:
## (from AFTER the matching line to EOF, NOT including the matching line)
matchtext=TERMINATE
sed -e "1,/$matchtext/d"
## Print all the lines before the line containing the matching text:
## (from line-1 to BEFORE the matching line, NOT including the matching line)
matchtext=TERMINATE
sed -e "/$matchtext/,\$d"
이 경우 텍스트를 변수로 바꾸는 데있어 중요한 점은 다음과 같습니다.
- [ ]로
$variablename
묶인 변수 ( ) 는 "확장"되지 않지만 [ ] 내부의 변수 는됩니다. 그래서, 당신은 변경해야 할 모든 에 그들은 텍스트가 포함 된 경우 변수로 교체하고자합니다. single quotes
'
double quotes
"
single quotes
double quotes
sed
범위도 포함되어 $
즉시와 같은 문자가옵니다 : $p
, $d
, $w
. 당신이 그 탈출 그래서 그들은 또한, 확장 할 변수 모양을 $
백 슬래시 [와 문자를 \
같은] : \$p
, \$d
, \$w
.
grep 'TERMINATE' file