質問
結果はgrep -A 4 davidson file.txt
次のとおりです。
davidson 0 27 |r|= 0.00244 e= [-0.04073962 0.42777949 0.44157777 0.45997235 0.45997235 0.51613738
0.55005554 0.5538866 0.5538866 0.57108874 0.63182267 0.68741162
0.68741186 0.69608 0.78013465 0.78013465 0.78042162 0.78688599
0.78688599 0.79381315 0.79381317 0.80049466 0.80049466 0.92062423
0.93453524 1.01356402 1.01942272] max|de|= 1.02 lindep= 0.809
--
davidson 1 54 |r|= 3.26 e= [-0.04073964 0.42777928 0.44157749 0.45997213 0.45997213 0.51613724
0.55005542 0.55388652 0.55388652 0.57108822 0.63182247 0.68741026
0.68741031 0.69607963 0.78013252 0.78013252 0.78042159 0.78688546
0.78688546 0.793812 0.793812 0.80049354 0.80049354 0.92062408
0.93453361 0.97904591 1.01356325 1.01945088] max|de|= -0.0404 lindep= 0.694
--
davidson 2 66 |r|= 0.523 e= [-0.04073964 0.02576398 0.42777928 0.44157749 0.45997212 0.45997212
0.51613724 0.55005542 0.55388652 0.55388652 0.57108822 0.63182247
0.68741006 0.68741006 0.69607962 0.78013218 0.78013218 0.78042159
0.78688546 0.78688546 0.79381179 0.79381179 0.80049292 0.80049292
0.92062408 0.93453351 1.01356275 1.01942294] max|de|= -0.953 lindep= 0.278
上記の3つの出力セットのそれぞれについて、最初の行と最後の行のみを希望する場合はどうなりますか?davidson
具体的には、文字列の各インスタンスに対して行1〜5をインポートするのではなく、行1と5のみをインポートしたいと思います。
以前に試した研究
私が検索したものは次のとおりです。
「grep -A」ですが、一部の行を削除しました。
Googleとunix.seの検索ボックスでは、多くの結果が得られませんでした。特に後の検索ではこれ)。これは、Google検索で見つけたいくつかの結果と私の問題が解決しないような理由です。
- Unix SE:パターンAを持つgrepファイルですが、パターンBを持つファイルは除外されます。(実際には毎回異なるので、どのパターンを除外すべきかわかりません。)
- スタックオーバーフロー:grep は複数行を無視します。(回答は質問に提供された特定のデータについて非常に「ハードコード」されており、説明はありません。)
- スタックオーバーフロー:grepの-vオプションを-Aオプションと組み合わせる(答えは質問に与えられた特定のデータに非常に「ハードコード」されています。)
- スタックオーバーフロー:パターンマッチング後のN行目の抽出(似ていますが、私が質問するものとは異なります。)
- スタックオーバーフロー:Grepで行をスキップ(これはますます近づいていますが、私が求めているものではありません)。
この質問を入力すると、次の質問が私に提案されました。
- Unix SE:grepドキュメントの「group-separator」オプションはどこにリストされていますか?、これは次のことを示します。
- スタックオーバーフロー:コンテキスト行でgrepを使用するときに「--」行区切り文字をどのように削除しますか?
しかし、これらのどれも私の問題を解決しません。
答え1
残念ながら、生のデータサンプルを提供していませんが、上記の出力を使用して希望の結果を得ることができますか?
代わりに、grep -A4 ...
以下を試してください。
awk '/davidson/{h=NR;line=$0} NR==h+4{print line;print $0}' file.txt