2016-05-05 4 views
1

成功していない長い検索の後、私はいくつかの助けを求めてここに来ました。Bash - あるファイルのid文字列が別のファイルのid範囲ポリシーに含まれているかどうかを確認する方法?

A.TXT:

AC0359 
AC0360 
AC0361 
AC0362 
AC0369 
AC0372 
AC0374 
AC0376 
AC0380 
BD0381 
BD0384 
BD0386 
BD0389 
BD0390 
BD0392 
BD0393 
EF0394 
EF0395 
EF0398 
EF0402 
EF0404 
EF0409 
EF0410 

- - ID列 B.TXTのリストが含まれています。例えばidの範囲政策

のリストが含まれてい A.TXT:私は2つのファイルを持っていますB.TXT:

from="AC0000" to="AC0400" 
from="BD0300" to="BD0700" 
from="EF0400" to="EF1000" 
from="GT0000" to="GT2700" 

私はそれがB.TXTに記載されている範囲の方針の1つに含まれる場合、A.TXTに記載されたID列のそれぞれについて、知っていただきたいと思います。私はかなりの時間のための解決策を見つけることを試みているので、私は本当に助けに感謝します。

これは私がこれまでにやっていることです:

found_range=false 
while read barcode; do 
    while read range_line <&3; do 
     if [[ $range_line == from=* && $found_range = false ]] 
     then 
      start_range=$(echo $range_line | cut -d '"' -f 2); 
      end_range=$(echo $range_line | cut -d '"' -f 4); 
      if [[ ! "$barcode" < "$start_range" && ! "$barcode" > "$end_range" ]] 
      then 
       echo "$barcode is between the range $start_range and $end_range" 
      fi 
     fi 
    done 3<b.txt 
done <a.txt 

ありがとう!

+3

あなた自身で解決策を試しましたか? – 123

+0

はい、私は試しましたが、私はスクリプトをbashするのがかなり新しいです。これを解決しようとする試みはうまくいきません。私はa.txtから各行を読み込み、変数$ recに保存しようとしました。 $ recごとに、b.txtの同じid接頭辞で始まるポリシーを見つけるためにgrepを使いました。しかし、私は同じ反復で2つの別々のファイルから読み取ることは問題である可能性があることを理解しています、私はIDの比較がこれのために失敗しているか、またはIDを範囲と適切に比較していないためです。 – dabadie

答えて

0

私はこれを解決できました。私の解決策は編集された答えです。

関連する問題