正規表現を使用して、他の特定の文字を含む行の文字の前にのみ表示される文字のリストを生成するにはどうすればよいですか?

正規表現を使用して、他の特定の文字を含む行の文字の前にのみ表示される文字のリストを生成するにはどうすればよいですか?

次のテキストファイルがあります。

407-OL?
408-2-OL?
408-OL?
418-het?
420-1 and 2- OL?
429-2-left unscored?
430-2-left both unscored?
431-1 and 2- Ri??
436-1-just homozygote?
444-2-het? ins. both
456-2-ins 246 despite slight OL
456-1-ins 245 (weaker)
457-2-Ri?

私は左(ダッシュの前)にある数字を返したいのですが、疑問符を含む行からのみ返したいと思います。つまり、私はこれを出力したいと思います。

407
408
408
418
420
429
430
431
436
444
457

ベストアンサー1

おそらく最も簡単な方法は次のとおりです。cat some_file | grep '?' | cut -d'-' -f1

  • cat somefile=>コンテンツをsome_fileパイプラインに送信する
  • grep '?'=>以下を含む行のみをフィルタリングします。?
  • cut -d'-' -f1=>文字列を-フィールド区切り文字でフィールドに分割し、フィールド#1を印刷します。

おすすめ記事