2013-09-27 2 views

답변

2
sed '/\(pattern\).*/{s//\1/; q;}' 
+0

고마워,이게 내가 원하는거야. –

+0

이것과 반대가 되겠습니까 : sed '/ {s // \ 1 /; q;}. * '/ \ (패턴 \)'? –

1

사용 :

sed '/pattern/q' file 

pattern이 발견 될 때까지이 파일을 인쇄하고 다음이 처리의 나머지 부분을 종료합니다.

+0

패턴이 줄의 중간에 있으면이 명령은 여전히 ​​나머지 줄을 인쇄합니다. 문자열이 발견되면 프로세스를 중지하는 방법이 있습니까? –

0

다양한 방법이 있습니다. 당신은 예를 들어 파일에서 라인의 특정 번호를 표시하기 위해서는 출력 줄 번호를 만들기 위해 GREP의 -n 옵션을 사용하여 첫 번째 줄 번호를 추출하고 head을 지시하는 데 사용할 수 있습니다 :

head -n $(grep -n somestring file | cut -d: -f1 | head -n 1) file 
0

awk 사용

awk '!f; /pattern/ {f=1}' file 

인쇄 라인 f=0 경우, pattern 설정 발견하는 경우 f=1

+2

나는 'awk'1을 사용할 것이다;/pattern/{exit} 'file' 명령을 사용하십시오. IMHO 더 간단하고 명확하고 더 효율적입니다. –

+0

또 다른 짧은 버전. 'awk '/ search/{exit} 1'file' – Jotne

+0

일치하는 문자열을 포함하는 줄을 출력하지 않기 때문에 동일한 기능이 아닙니다. –

관련 문제