2016-07-28 6 views
1

私はlinuxを初めて使用しています。私はFile_Aターゲットサイト外のタブで区切られたテキストファイルのエントリを抽出する

aaa 90  111  
aaa 95  110 
aaa 102  115 
aaa 105  118 
aaa 107  119 
aaa 117  130 

とfile_B

aaa 100 120 

は今、私のようなfile_Bの範囲外

を次のfile_Aのすべてのエントリを保持したい2つのタブ区切りのテキストファイルに

を持っています

aaa 90  111  
aaa 95  110 
aaa 117  130 

私を親切に案内します。

+1

これは比較的簡単ですが、あなたは何を試してみましたか?あなたを導くか、コードを書くか? fileBをロードし、範囲を2つのvarに保存し、fileAの各行をロードし、範囲外の場合は$ 2と$ 3を比較してプリントします。私はこれが宿題だと思う。 – Kent

+2

最初のフィールド( 'aaa')**は常に両方のファイルの共通の値です**? 'file_B'は常に1行だけですか?答えが「いいえ」の場合は、質問を編集して、そのような場合を含むサンプル入出力を使用してください。 –

答えて

3

このawkは動作するはずです:

awk 'FNR==NR{low[$1]=$2; high[$1]=$3; next} 
    $1 in low && ($2 <= low[$1] || $3 >= high[$1])' file2 file1 

aaa 90  111 
aaa 95  110 
aaa 117  130 
+0

**実際には、すべてのファイルに唯一の '$ 1'値があるようだから**実際には過剰なことがあります。 –

+0

はい私は、両方のファイルの列1の異なる値を扱うことができるように汎用的にしようとしました。 – anubhava

+0

うん、私はそれを理解した。 OPにそのようなケースがあるかどうかは分かりません。 –

関連する問題