パターンが一致する親行と子行を含む中間行を検索しますか?

パターンが一致する親行と子行を含む中間行を検索しますか?

次のデータセット(ファイルなど)があります。

4.048   5.9392765
4.051   5.9392765
4.068   5.9392765
4.293   5.9392765
4.3 "A random string"
4.331   5.9392765
4.429   6.0137865
4.609   6.0303125
4.662   6.0303125
5.626   6.1261205
5.815   6.1261205
6.347   6.1261205
6.543   6.1261205
6.7 "A random string"
7.420   6.1611095
7.526   6.2542085
7.541   6.2698285
7.556   6.2698285
7.928   6.2698285

中央の行の2番目のフィールドが数値ではなく文字列である3行(行)のグループを抽出したいと思います。たとえば、上記の入力の場合は、次のような出力を取得したいと思います。

4.293   5.9392765
4.3 "A random string"
4.331   5.9392765
------------------------
6.543   6.1261205
6.7 "A random string"
7.420   6.1611095

どうすればいいですか?

答え1

より簡単な答え:

grep -C1 ''''文書

引用符文字()を含む行を見つけて、前後に"1行ずつ表示します。

答え2

grep解決策:

grep -C1 -E '^[0-9]+\.[0-9]+[[:space:]]+[^0-9[:space:]]+' file
  • -C NUM-NUM出力コンテキスト行を印刷します。
  • -E- 拡張正規表現
  • [^0-9[:space:]]+-[:space:]スペースや数字を除くすべての文字と一致します。[0-9]

出力:

51174.29300 2265.9392765
51174.3 "A random string"
51174.33100 2265.9392765
--
51176.54300 2266.1261205
51176.7 "A random string"
51177.42000 2266.1611095

関連情報