次のデータセット(ファイルなど)があります。
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