2

どういうわけか、具体的であることはタイトルにうまく反映されません.

cygwin 環境で BASH スクリプトを使用する私の目標は次のとおりです。

  1. テキスト ファイル $filename を読み取り、スキーマとテーブル名のリストを取得します
  2. そのスキーマとテーブル名のリストを取得し、$lookup_file で一致を見つけて値を取得します
  3. その値を使用して論理的な選択を行います

私は基本的に各アイテムを別々に動かしています。全体を接着する方法がわかりません。

ステップ 1 では、

grep $search_string $filename | awk '{print $1, $5}' | sed -e 's~"~~g' -e 's~ ~\t~g'

スキーマ{タブ}テーブルのリストを提供します

ステップ 2 では、

grep -e '{}' $lookup_file | awk '{print $3}'

$lookup_file は schema{tab}table{tab}value です

ステップ 3 は基本的に、返された値に基づいて「何か」を実行することです。報告を提出する、警告を電子メールで送信する、無視するなど。

パート 1 とパート 2 を xargs で文字列化しようとしましたが、スキーマとテーブル名がファイル名として扱われ、エラーがスローされます。

欠けている接着剤は何ですか?または、より良い方法はありますか?

4

2 に答える 2

2
awk -v search="$search_string" '$0 ~ search { gsub(/"/, "", $5);
                                              print $1"\t"$5; }' "$filename" |
    while read line
    do
        result=$(awk -v search="\b$line\b" '$0 ~ search { print $3; } ' "$lookup_file");
        # Do "something" with $result
    done
于 2013-08-30T20:59:31.257 に答える