2011-07-29 5 views
12

sed에서 정규식을 적용 할 때 첫 번째 n 줄을 건너 뛸 수 있습니까? 내가 현재 사용하고있는 다음sed와 함께 regex를 사용할 때 처음 n 줄 건너 뛰기?

Name 
John 
Albert 
Mora 
Name 
Tommy 
Tammy 

한 번에, 내가 Name을 포함하는 행을 제거하는 것입니다 (그 중 하나는 일부 정규 표현식에를 사용하고 싶지만 내가 원하는 : 다음 파일에

cat test | sed '/^Name/d;/^----------/1;/^(/d;/^$/d' 

다음 얻기 위해이 경우 첫 번째 줄)을 건너 뛰려면 : 파일이 크다

Name 
John 
Albert 
Mora 
Tommy 
Tammy 

때문에, 나는 여러 패스 그래서 어느 한 패스 접근 방식이 좋은 것입니다 만들고 싶어하지 않습니다.

답변

21

예. N,M 구문을 사용하여 sed 명령을 줄 범위에 적용 할 수 있습니다. 삭제와

sed -e '2,$s/foo/bar/' 

예 :

sed -e '2,${ /^Name/d }' 
+0

은 어떻게 대체 반대로 삭제와 구문을 사용하는 나에게 보여 주 시겠어요이 경우는 다음과 같이 줄까? 기본적으로,'sed '2, $/^ Name/d''과 같은 명령을하면 명령은'sed : -e expression # 1, char 4 : unknown command :'/'' – Legend

+0

+ 1 그냥 알아 냈어 :) 저에게 올바른 방향을 가르쳐 주셔서 감사합니다. – Legend

+0

'2, $'는 2 행에서 파일 끝까지를 의미합니다. $ 바로 뒤에있는 항목이 작업입니다. 이 예제의 경우,'s/search/replace' 또는'{/^string-to-delete/d}' – Excalibur