2009-07-02 13 views
0

私はコーパス内のすべてのヘッダーを見つけるためにgrepを使用したいと思っています。すべてのものを:まで見つけ出し、その後はすべてを無視したい。誰もそれを行う方法を知っていますか? (完全なコード行を得ることができます)Grep Usage help

+0

入力と希望出力の例を教えてください。 –

+0

インプットは長いヘッダーを持つ迷惑メールのリストで、出力はヘッダーが次のようなファイルです:like Cc:またはTo: – kman99

+0

キューブに到達したときに持っていたものを投稿します – kman99

答えて

3

sedまたはawkを使用してください。

sedの例:

sed -e '/^[^:]*$/d' -e 's/\(.*\):.*/\1/' filename 
1

あなたがしたいすべてがマッチした行の最初の部分を表示している場合、あなたは

grep your_pattern | cut -d: -f 1 

を言うことはできますが、データ照合しないようにしたい場合はコロンの後には、別のツールが必要です。

#!/usr/bin/perl 

use strict; 
use warnings; 

while (my $line = <>) { 
    my $substring = split /:/, $line; 
    if ($substring =~ /your_pattern/) { 
     print "$substring\n"; 
    } 
} 
1

(私は:利用可能な多くのツールsedawkperlpythonなどがたとえばあり、Perlコードは、この

perl -nle '($s) = split /:/; print $s if $s =~ /your_pattern/' 

以上スクリプト・バージョンのようになります。

0123(あなたの質問を完全に理解しているかわからない)

あなたは 'grep' AND 'cut'を使用する必要があります。

$ catファイル| grep ':' | -f 1 -dをカット ':'

0

のsed -n '/^$/q;/:/{s/:.*/:/;p;}'

これは、すべての後に停止しますヘッダーが処理されます。

編集:ビット改良版:

SED -N「/^$/Q;/^ [^:\ T] {1}/{S /:.*/:/; P ;} '