2012-05-09 6 views
0

私はhdisk名を含む最初の列だけをしたい、このこのサンプルで使用する正規表現は何ですか?

hdisk10     128000   200B75Y4191001707210790003IBMfcp 
hdisk11     128000   200B75Y4191001807210790003IBMfcp 
hdisk13     128000   200B75Y4191001A07210790003IBMfcp 
hdisk14     128000   200B75Y4191001B07210790003IBMfcp 
hdisk15     128000   200B75Y4191001C07210790003IBMfcp 
hdisk16     128000   200B75Y4191001D07210790003IBMfcp 
hdisk17     128000   200B75Y4191001E07210790003IBMfcp 
hdisk18     128000   200B75Y4191001F07210790003IBMfcp 
hdisk19     128000   200B75Y4191002007210790003IBMfcp 

のようなコマンドの出力を持っています。すべての行でhdiskXXの後にすべてを削除したいと思います。 XXは1〜3桁、ほとんどは2桁です。

私は、次の正規表現に

検索しようとした:hdisk[0-9][0-9].*

を置き換えますを:hdisk[0-9][0-9]

しかし、結果の文字列をhdisk[0-9][0-9]代わりにhdisk10のようなものです。なぜ正規表現として[0-9]を解釈せず、文字通り単にそれを扱うのですか?

私が欲しいものを達成するためにここでどの正規表現を使用する必要がありますか?

私は正規表現の検索と置換をサポートするNotepad ++でこれを試しています。

+0

あなたは 'キャプチャ'が必要です。 – neevek

+0

ええ、キャプチャする必要があります。置換に範囲を指定することはできませんが、意味がありません。 "数字で置き換える[0-9]" - それはちょうど1つを作ると思われますか? ;) – delicateLatticeworkFever

+0

私はnotepad ++を使っていませんが、この簡単なコマンドで 'awk'を使いたいことができます:' awk '{print $ 1}' infile' – neevek

答えて

3

キャプチャグループを使用する必要があります。 (hdisk[0-9]+).*を探して、\1に置き換えてください。

\1は、「最初の括弧内に見つかったものはどれも」を意味します。

(参考:http://ozansafi.wordpress.com/2008/12/11/notepad-regular-expression-usage/

+0

ありがとう、それは助けました。このキャプチャの仕組みを説明している良いドキュメントを教えてください。 –

+0

あなたはこの記事を見ることができます:http://www.regular-expressions.info/brackets.htmlインターネットに数十もあります。 –

+0

@Stacker、参考文献を追加しました:-) – aioobe

1

それは非常に一般的ですが、動作するはずです。 \s+\d+\s+200B.*を探し、空の文字列に置き換えます。あなたがメモ帳++で\ dと+を使うことができるかどうか分かりません...あなた自身をチェックしてください

+0

あなたは親切にあなたの正規表現は何をしているのですか? –

+0

正の数のスペース(1つ以上)の後に正の桁数が続き、正の数のスペースと、それに続く200Bで始まる文字列が続きます。このケースでは機能しますが、より複雑な状況を想像することができます。次に、aioobeのアプローチはより合理的です。 –

関連する問題