質問: grepを使用する;パターンのn番目の出現を表示するにはどうすればよいですか? grepを使用する; (n thパターンの発生?例えば; man sh |grep -a3 -- '-c'はいくつかの一致を返します。 rdオカレンスのみを分離して、次のように表示したい場合があります。-- -c read commands from the command_string operand instead of from the standard input. special parameter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands. --
回答: 必要なオカレンスはsecondオカレンスではありません。 サードです。 3行のコンテキストで_-c_の3番目のオカレンスを取得するには:_$ man sh | awk '/-c/{n++; if (n==3)f=3;} f{print;f--;}' -c read commands from the command_string operand instead of from the standard input. special param‐ eter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands. _使い方awkは、入力を1行ずつ暗黙的に読み取ります。このスクリプトは2つの変数を使用します。 nは、_-c_を見た回数を追跡します。 fは、印刷することになっている行数を追跡します。 /-c/{n++; if (n==3)f=3;} _-c_を含む行に到達したら、カウントnを1つインクリメントします。 nが3の場合、fを3に設定します。 _f{print;f--;}_ fがゼロ以外の場合は、行を出力してfをデクリメントします。 代替ソリューション_$ man sh | grep -a3 -m3 -- -c | tail -n4 -c read commands from the command_string operand instead of from the standard input. special param‐ eter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands. __-m3_オプションは、最初の3つの一致のみを返すようにgrepに指示します。 _tail -n4_は、これらの一致の中から最後の4行を返します。ただし、_-c_への2番目と3番目の一致がコンテキスト行数の範囲内であった場合、この出力は希望どおりでない可能性があります。