파일에서 텍스트 문자열을 찾아 그 뒤의 나머지 텍스트만 출력하시겠습니까?

파일에서 텍스트 문자열을 찾아 그 뒤의 나머지 텍스트만 출력하시겠습니까?

이 포럼에서 텍스트 파일에서 다양한 값을 찾아 그 주변의 텍스트를 출력하는 것과 관련된 게시물을 많이 찾았습니다. 그러나 나는 "스트림 지향"을 찾지 못하는 것 같습니다.

파일에서 특정 문자열을 찾아 출력하고 싶습니다.오직파일 끝에 도달할 때까지 이어지는 텍스트입니다. 즉, 특정 문자열 값에 도달할 때까지 파일의 텍스트를 무시한 다음 해당 지점에서 텍스트를 출력하는 필터와 같은 것을 원합니다.표준 출력파일 끝까지. 나는 사용하고 싶다표준 출력따라서 원하는 경우 출력을 파일로 파이프할 수 있습니다.

이 작업을 수행하는 데 도움이 될 수 있는 Linux 텍스트 유틸리티가 있습니까? 그렇다면 어떻게 해야 합니까? 또는 이 작업을 수행하기 위해 bash 쉘 스크립트를 작성해야 하는 경우 이를 수행하기 위해 사용할 일반적인 단계와 명령줄 유틸리티는 무엇입니까?

예를 들어, 다음 샘플 파일이 제공됩니다.

one
two
three
four
five

"3" 이후의 모든 텍스트를 출력한다고 가정하면 결과는 다음과 같습니다.

four
five

참고: 관련성이 있어 보이는 이 기사를 찾았지만 보시다시피 약간 혼란스럽습니다.

텍스트를 찾고 해당 텍스트를 복사하는 방법은 무엇입니까?

답변1

사용 awk:

awk 's;/^three$/{s=1}' file

또는

awk 's;$0=="three"{s=1}' file
  • s;변수가 true이면 행이 인쇄됩니다 s. 패턴/단어가 발견된 후 처음으로 이런 일이 발생합니다.
  • /^three$/{s=1}s패턴/단어가 발견되면 변수는 true(1)로 설정됩니다.

답변2

GNU 사용 sed:

sed 0,/three/d

Linux는 커널이므로 유틸리티가 없습니다. GNU는 Debian GNU/Linux와 같은 GNU/Linux 시스템의 일반적인 구현 sed입니다 . sedGNU는 sedLinux보다 앞서 있으며 Linux를 커널로 실행하는 대부분의 시스템을 포함하여 대부분의 Unix 계열 시스템에서 실행되도록 컴파일되었습니다. 그 자체는 1970년대 후반 0의 UNIX 유틸리티(이 주소를 포함한 일부 확장 포함)를 무료로 오픈 소스로 재구현한 것 입니다.sed

답변3

POSIX sed를 사용하면 다음을 수행할 수 있습니다.

sed -ne '/three/!d;:a;n;p;ba' inp.file

펄 사용:

perl -lne 'print if 1 <(/three/...eof)' inp.file

관련 정보