답변:
AWK
사용 AWK
-이것이 얻을 수있는 가장 간단합니다.
awk '/yellow/,0' textfile.txt
샘플 런
$ awk '/yellow/,0' textfile.txt
yellow
red
orange
more orange
more blue
this is enough
그렙
옵션 grep
과 함께 사용 --after-context
하여 일치 후 특정 양의 줄을 인쇄 할 수도 있습니다
grep 'yellow' --after-context=999999 textfile.txt
컨텍스트 자동 설정을 위해을 사용할 수 있습니다 $(wc -l textfile.txt)
. 기본적인 아이디어는 당신이 일치하는 것으로 매우 첫 번째 줄이 있고 그 경기 후 모든 인쇄하려면, 당신이 파일에서 1을 뺀 Luckly의 줄 수를 알아야 할 것입니다 --after-context
수에 대한 오류가 발생하지 않습니다 줄의 범위를 완전히 벗어난 숫자를 줄 수는 있지만 모르는 경우 총 줄 수는
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
명령을 단축하려면 and과 --after-context
같은 옵션을 사용 하면 파일 이름 다음에 줄 수로 확장됩니다. 그렇게하면 한 번만 입력 할 수 있습니다-A
$(wc -l textfile.txt)
textfile.txt
grep "yellow" -A $(wc -l textfile.txt)
파이썬
skolodya@ubuntu:$ ./printAfter.py textfile.txt
yellow
red
orange
more orange
more blue
this is enough
DIR:/xieerqi
skolodya@ubuntu:$ cat ./printAfter.py
#!/usr/bin/env python
import sys
printable=False
with open(sys.argv[1]) as f:
for line in f:
if "yellow" in line:
printable=True
if printable:
print line.rstrip('\n')
또는 printable
플래그 없이
#!/usr/bin/env python
import sys
with open(sys.argv[1]) as f:
for line in f:
if "yellow" in line:
for lines in f: # will print remaining lines
print lines.rstrip('\n')
exit()
grep "yellow" -A $(wc -l < "my colors.txt") "my colors.txt"
.
당신은 그것을 할 수 있습니다 :
awk '/yellow/{f=1}f' file
여기서 "file"은 텍스트를 포함하는 파일 이름입니다.
파티에 늦게 :)
사용 grep
:
grep -Pzo '(?s)\n\Kyellow\n.*' file.txt
-P
Perl 호환 정규식을 사용할 수 있습니다
-z
입력 파일을 개행 문자가 아닌 ASCII NUL로 구분합니다.
-o
원하는 부분 만 취합니다
(?s)
DOTALL 수정 자이므로 토큰 .
(모든 문자)을 사용하여 줄 바꿈을 일치시킬 수 있습니다.
에서 \n\K
,이 \n
줄 바꿈과 일치, \K
경기를 폐기
yellow\n.*
일치 yellow
하고 개행 문자가 표시되고 그 이후의 모든 항목도 선택되어 출력에 표시됩니다.
예:
% grep -Pzo '(?s)\n\Kyellow\n.*' file.txt
yellow
red
orange
more orange
more blue
this is enough
적은 사용 python
:
#!/usr/bin/env python2
with open('file.txt') as f:
lines = f.readlines()
print ''.join(lines[lines.index('yellow\n'):])
lines
파일의 모든 줄을 포함하는 목록입니다 (마지막 줄 바꿈 포함)
lines.index('yellow\n')
발견 된 lines
곳 중 가장 낮은 지수를 제공합니다yellow\n
lines[lines.index('yellow\n'):]
목록 슬라이싱을 사용하여 yellow\n
끝까지 시작하는 부분을 가져옵니다.
join
목록의 요소를 결합하여 문자열로 출력합니다.
yellow
에서 일치하고 싶다는 것이 분명하다고 생각합니다 . 또한 그렇지 않다면 우리는 python
자신의 알고리즘 을 변경해야합니다 .
grep
하고 전체 줄과 일치하지 않는다고 가정 할 수 있습니다 . 나는 btw를 찬성했다.
질문은 파일 을 보는 것과 관련이 있기 때문에 항상 좋은 결과가 있습니다.
less +/yellow file
less
. 아주 좋아요!
grep
명령을로 단순화 할 수 있습니다grep "yellow" -A $(wc -l textfile.txt)
.