2016-08-12 5 views
0

何千もの行のデータを毎日受け取る。場合によっては、いくつかの行が混乱し、自動プロセスが失敗することがあります。これが起こると、エラーを見つけることが難しくなる可能性があります。regex - パターンに一致しないすべての文字列を見つける

通常のファイル構造に準拠していないものを見つけるには、正規表現を使用したいと思います。

ABC|SomeText|MoreText 
DEF|SomeText|MoreText 
ABC|SomeText|MoreText 
GHI|SomeText|MoreText 
DEF|SomeText|MoreText 

フラグラインは3つの文字とpipebarで始まらないので、正規表現を:すべての行は、次のように見えることになっています。 は、以下の例では、フラグ線3

ABC|SomeText|MoreText 
DEF|Some 
Text|MoreText 
ABC|SomeText|MoreText 
GHI|SomeText|MoreText 
DEF|SomeText|MoreText 

は、すべてのヘルプは、私はしばらくの間、これで苦労してきた、いただければ幸いです。

例えば多くのおかげ

+0

ツール/プログラミング言語とは何ですか? –

+0

質問タグを使用している場合は、メモ帳++を追加する必要があります。 Notepad ++はBoost regexライブラリを使用しています.PCREではありませんが、それに近いです。 –

答えて

1

使用している正規表現の方言を説明することは非常に役に立ちます。あなたはグレップを使用している場合たとえば、あなただけの意味を反転してからちょうどそうのように、通常の正規表現を書くため-vオプションを使用することができます。

grep -v -E '^[A-Z]{3}\|[^|]*\|' 

そうでなければ、あなたが意味を反転しますが、あなたができない場合

grep -P '^(?![A-Z]{3}\|[^|]*\|)' 

(?!...)部分は否定先読みを作る:あなたは次の操作を行うことができnegative lookahead(Perlのように)使用することができるシステムを持っています。これは、先頭に3つの大文字、1つのバー、いくつかのテキスト、次に別のバーが続く行に一致します。

+0

素早く対応してくれてありがとうNeil。私は方言が分からない。現在、私はnotepad ++のregex機能を使ってファイルを検索しています。それが役立つかどうかはわかりません。私はこれらを試してみましょう! – Cyan02

+0

明らかにnotepad ++はPCRE(Perl互換の正規表現)を使用しているため、2番目を否定的な先読みでサポートする必要があります。がんばろう! –

+0

あなたはかなり正しいです、それは勝利のため#2でした。魅力的な作品!申し訳ありませんが、これは私の最初の質問でした...私は正しい答えとしてそれをトグルするのですか? – Cyan02

1

、awkを使用して:

awk '!/^[a-zA-Z]{3}\|/' input.txt 

は 'フラグを立て' 行が表示されます。

awk '/^[a-zA-Z]{3}\|/' in.txt 

は正しい行を表示します。

+0

ありがとうWroniasty、私はこれを試してみましょう! – Cyan02

関連する問題