私はコンピュータにどのソフトウェアもインストールできない会社に勤めていますが、そこで使用するWindowsは不便です。
イントラネットからコピーした多くのテキストを整理してtxtファイルとして保存する必要があります。だから私はsed
次awk
のオンラインライブエディタを使用する必要があります。これまたはこれ
この言葉はこうです。
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ページでは、両方の方法が機能します。