2014-01-21 3 views
2

실행하는 동안 -n 옵션을 사용하지 않고도 변경된 행만 표시하는 별도의 sed 스크립트 (script.sed라고 부름)를 만들 수 있습니까? (영어로 죄송합니다)변경된 행만 표시하는 간단한 sed 스크립트

숫자가있는 data2.txt라는 파일이 있는데 ".5"로 끝나는 행을 변경하고 변경된 행을 콘솔에 인쇄해야합니다.

단일 명령 (sed -n 's/.5$//gp' data2.txt)으로 수행하는 방법을 알고 있지만 대학 교수는 sed -f script.sed data2.txt 명령을 사용하여 동일한 작업을 수행해야합니다.

아이디어가 있으십니까?

+0

죄송합니다? 많은 영어 원어민보다 낫습니다. ' 사실, 그것은 뽀얀입니다. – tenub

+0

감사합니다. 당신은 가장 친절합니다. 정말 고맙습니다. :) – user3221028

답변

4

는 당신 나오지 스크립트 다음과 같은 작업을해야합니다 : 라인의 자동 인쇄가 표시되지 않습니다

s/.5$//gp 
d 

-n 옵션은 그렇게 할 수있는 다른 방법은 d 명령을 사용하는 것입니다. 사람이 페이지에서 :

d  Delete pattern space. Start next cycle. 

라인의 자동 인쇄주기의 끝에서 발생하고 d 명령을 사용하여 당신이 그렇게주기의 끝에 도달하지 의미하기 때문에이없이 작동 선이 자동으로 인쇄됩니다.

+0

좋아요! 고마워, 정확히 내가 뭘 찾고 있었는지 :) – user3221028

+0

줄 끝에 고정되어 있고 여러 줄 플래그를 사용하는 여러 줄 표현이 아니기 때문에 'g'는 필요하지 않습니다. – potong

1

당신 (GNU이 나오지도)에 대한이 작동 될 수 있습니다

#n 
s/.5$//p 

저장이 파일에하고 실행 영어에 대한

sed -f file.sed file.txt 
+0

첫 번째 #n은 sed -n이 sed 스크립트에 설정된 것과 같은 옵션입니까? – NeronLeVelu

+1

@NeronLeVelu [자주 사용하는 명령] (http://www.gnu.org/software/sed/manual/sed.html#Common- 명령)을 참조하십시오. – potong

+0

감사합니다. #n의 특별한 동작을 알지 못했습니다. 대본에서의 첫 번째 장소 – NeronLeVelu

관련 문제