SEDまたはAWKを使用してtxtファイルから特定の番号を削除する方法は?

SEDまたはAWKを使用してtxtファイルから特定の番号を削除する方法は?

私はコンピュータにどのソフトウェアもインストールできない会社に勤めていますが、そこで使用するWindowsは不便です。

イントラネットからコピーした多くのテキストを整理してtxtファイルとして保存する必要があります。だから私はsedawkのオンラインライブエディタを使用する必要があります。これまたはこれ

この言葉はこうです。

01

010010-26.2010.501.0026  fafas fasdf asdf asdfsadf asdfasd fasd asasdff

fdfsadf adsf adsf asdf asdfas fadsf asdfa

02

0011-15.2016.501.0012  fafas fasdf asdf asdfsadf asdfasd fasd asasdff
asdfasd fasd asasdff
asdfasd fasd asasdff
0011-125.2013.501.0012
asdfasd fasd asasdff

このような数字を見るのが0011-15.2016.501.0012私が望むものです。残りは気にしませんが、これらすべての数字を1行に1つずつ含めて、きれいな新しいテキストを作成したいと思います。前の例ではテキストが必要でした。

010010-26.2010.501.0026
0011-15.2016.501.0012
0011-125.2013.501.0012

すべての数字では、.501.常に4番目のグループとして表示されます。

sedオンラインエディタでこのコマンドを試しました。

's/\([0-9]*\-[0-9]*\.[0-9]*\.501\.[0-9]*\)/\1/'

動作しません。

ベストアンサー1

うまくいきますが、何も変更しないか、元に変更します。しかし、このコードを少しだけ変更すると、欲しいものが得られます。

sed -n 's/\([0-9]*\-[0-9]*\.[0-9]*\.501\.[0-9]*\).*/\1/p'

3つのことに注意してください。

  • -nスイッチは基本的に何も印刷しないことを意味します。
  • .*選択したグループの終わりに(...)
  • p最後のコマンドは、この行を印刷することを意味します。

結果:

010010-26.2010.501.0026
0011-15.2016.501.0012
0011-125.2013.501.0012

ところで、拡張正規表現を追加して使用すると、少し単純化できます-E。つまり、キャプチャグループの前のバックスラッシュを削除するだけです。

sed -E -n 's/([0-9]*-[0-9]*\.[0-9]*\.501\.[0-9]*).*/\1/p'

上記のWebページでは、両方の方法が機能します。

おすすめ記事