回答:
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を引いた数を知る必要があるということです。幸い、--after-context
数のエラーはスローされません行なので、完全に範囲外の番号を与えることができますが、それがわからない場合は、行の合計数で十分です
$ grep 'yellow' --after-context=$(wc -l < textfile.txt) textfile.txt
yellow
red
orange
more orange
more blue
this is enough
コマンドを短くしたい場合--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
が一致しない場合はline..alsoでは、我々は変更する必要があるpython
1のアルゴ...
grep
に機能し、完全な行だけに一致しないと想定するかもしれません。ところで賛成しました。
質問はファイルの表示に関するものであるため、常に良い方法があります。
less +/yellow file
less
できるとは知りませんでした。非常に素晴らしい !
grep
コマンドをに簡略化できgrep "yellow" -A $(wc -l textfile.txt)
ます。