2012-04-23 7 views
0

約50万行のテキストを含むテキストファイルからNTLMハッシュを取り出すスクリプトを作成しようとしています。すべてのアカウントにハッシュが含まれているわけではなく、ハッシュを含むアカウントのみが必要です。ここで 大きなテキストファイルからハッシュを取り出すスクリプト

は、データがどのように見えるかのサンプルです:

マンゴーChango A(A):$ NT $ 547e2494658ca345d3847c36cf1fsef8 :::

他の行数千のファイルにあります。しかし、その特定の行は私がファイルから取り出したものです。それに当てはまる約100行があり、私はそれを探しているファイル全体を手作業で調べたくありません。

Linuxで実行して、そのパターンに従う行をファイルから取り出すことができる簡単なスクリプトや何かがありますか?

ありがとうございました!バッシュや他の多くのシェルで

+9

'grep'はジョブを実行しませんか? – Jasper

+0

@ChangoMango、あなたはあなたのために働いた答えを受け入れるべきです。 – gpojd

答えて

0

grep ":$NT$" your_file.txt 

引用は$パターンセーフに渡すことができます。

+3

いいえ、そうではありません。上記は '$ NT'を展開し、行末に展開されているものを探します。そうしたくない場合は、一重引用符を使用するか、最初のドル記号の前にバックスラッシュを入れ、いずれの方法でも二番目のドル記号の前にバックスラッシュを付ける必要があります。 –

+0

これで前にデータをプルすることはできますか?私はユーザ名を含む行全体を望みます。 –

+0

> $猫123.txt >マンゴーChango A(A):> 123 $ NT $ 547e2494658ca345d3847c36cf1fsef8 ::: > 321 > NT > $ NT > $ ENV NT = 123のgrep ":$ NT $" 123.txt > Mango Chango A(a):$ NT $ 547e2494658ca345d3847c36cf1fsef8 ::: >申し訳ありませんが、私はコメントに改行を入れる方法を考え出すことはできませんので、> blocquote identを改行と仮定します。 –

4

grep '\$NT\$'ファイル名

あなたが探している分野以外の$ NT $の他の発生があるかもしれない場合、あなたはより具体的な可能性 - これは2番目のコロンでそれを持っている唯一の行を検索します区切られたフィールド:

awk -F: '$2 ~ /\$NT\$/'ファイル名

+0

これで前のデータも引き出されますか?私はユーザ名を含む行全体を望みます。 –

+0

あなたのawkが素晴らしい仕事をマークしてください! –

+0

カッコは実際には必要ありません。 –

1

特異上の別のバリエーション:

grep -E ':\$NT\$[[:alnum:]]{32}:' 

必要な場合は、範囲を使用することができます。

grep -E ':\$NT\$[[:alnum:]]{30,34}:' 

以上の一般的なこと:

grep -E ':\$NT\$[[:alnum:]]+:' 

[:alnum:]は、上下、すべてのアルファベット文字を含んでいる文字の名前のクラスで、現在のロケールのすべての数字。

他の文字クラスは[:alpha:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:]、および[:xdigit:]が含まれます。

私は[:xdigit:]を使用しましたが、その中には "s"が含まれていました。

関連する問題