ではsed
、あなたは範囲と使用することができq
、単一の終了時にUIT入力:
sed '/^182$/p;//,/^ABC$/!d;/^ABC$/!d;q'
同様に、GNU grep
では、入力を2つgrep
のsに分割できます。
{ grep -nxF -m1 182; grep -nxF -m1 ABC; } <<\IN
123
XXY
214
ABC
182
558
ABC
856
ABC
IN
...印刷する...
5:182
2:ABC
...最初にixed-stringリテラルがgrep
見つかり、行全体182がその読み取りの開始から5行と一致し、2番目が同様に型指定されたABC一致がその読み取りの開始から2行または2行と一致したことを示します5行目で最初の読み終わり後。-F
-x
grep
からman grep
:
-m NUM, --max-count=NUM
Stop reading a file after NUM matching
lines. If the input is standard input from
a regular file, and NUM matching lines are
output, grep ensures that the standard input
is positioned to just after the last
matching line before exiting, regardless of
the presence of trailing context lines.
This enables a calling process to resume a
search.
再現可能なデモンストレーションのためにヒアドキュメントを使用しましたが、おそらく次のようにする必要があります。
{ grep ...; grep ...; } </path/to/log.file
また、次のような他のシェル複合コマンド構文でも機能します。
for p in 182 ABC; do grep -nxFm1 "$p"; done </path/to/log.file
grep
使用される要件ですか?私はこれでできるとは思いませんgrep
が、awk
orsed
(単独で、またはと組み合わせてgrep
)で簡単にできます。