改行文字の後のテキストを取得する方法

改行文字の後のテキストを取得する方法
仮定:

これが私が表示する唯一のテキストです。残りのテキストには[表示されていません]より多くのデータがありますが、これは問題です。テキストは少しきれいで、スペース、タブ、Unicodeでいっぱいで、きれいではなく、次のようにする必要があります。したがって、この正確なテキストをコピーして貼り付けるのはうまくいきません[マークアップ形式]:

私は持っています一部次のテキスト:

*** *
more text with spaces and  tabs                                                             
*****
1
Something here and else, 2000 edf, 60 pop
    Usd324.32           2 Usd534.22
2
21st New tetx that will like to select with pattern, 334 pop
    Usd162.14

*** *
more text with spaces and tabs, unicode
*****

私は次の明示的なテキストを取得しようとしています。

  • 1 Something here and else, 2000 edf, 60 pop Usd324.32

newlineそして、whitespace次のコマンドは次のもののみを取得します1

grep -E '1\s.+'

また、私は新しい接続を使用してこれを実行しようとしました。

grep -E '1\s|[A-Z].+' 

しかし、うまくいきません。grepテキストの他の部分から同様のパターンを選択し始めました。

awk '{$1=$1}1'   #done already
tr -s "\t\r\n\v" #done already
tr -d "\t\b\r"   #done already

どうやってキャッチできますか?

  • 1つをつかむnewline
  • その後、2行目全体をつかむ1 newline
  • 番号をつかんで$Usd324.34削除してくださいUsd

ベストアンサー1

pcregrepUltilineモードとキャプチャグループの内容を出力する機能がありますMo

$ pcregrep -Mo1 -o2 -o3 --om-separator ' ' '^(1)\n(.*)\n\h*Usd(\H+)' file
1 Something here and else, 2000 edf, 60 pop 324.32

おすすめ記事