私はいくつかのデータをフラットファイルに保存していますが、以下に示すデータと似ています。変数AGEが24で、変数userがuser01に等しいというような変数にデータを抽出できるようにする必要があります。私はまた、db [0]やdb [1]のように、どのデータベースにデータがあるかを知ることができる必要があります。私はこれまで何をやったかフラットファイルから変数へのテキストの読み込み
db[0].age="24"
db[0].user="user01"
db[0].password="pasword01"
db[0].office="usa office 1"
db[1].age="44"
db[1].userID="user01"
db[1].userPW="password02"
db[1].office="uk office 2"
は年齢のすべてのインスタンスを検索し、番号が配列に角括弧で抽出するためにはawkを使用することです。
databaseCount=($(awk '/'"age"'/' flatFile | cut -d "[" -f2 | cut -d "]" -f1))
次に、同様のawkを使用して、角括弧内のテキストを抽出し、そのデータを配列に格納することを考えていました。
私はその後、weachアレイのデータを見つけることdatabaseCountを使用して計画していたので、私は年齢配列の要素0で検出されたデータは、データベース0のためのものであり、要素1で検出されたデータがあることを知っているであろうage=($(awk '/'"dbUserAlias"'/' flatFile | cut -d\" -f2))
ofrデータベース1
問題は、スピーチマークの間に見つかったテキストの一部にスペースが含まれていることです。
echo ${office[0]}
"uk office 2"の代わりに "uk"を返します。
誰でもこれを修正する方法を知っていますか、またはデータを抽出するためのよりよい方法がある場合は、
ありがとうございます。あなたは二重引用符であなたの要素をカプセル化するべきである方法で、アレイにアクセスした場合
このデータを必要とする既存のbashスクリプトがありますか?それとも、まだ書かれていないスクリプトのためにこれを処理しようとしていますか?後者の場合は、awkですべてを直接実行してください。その入力は実際には実際に有効なawkです(必要ならば有効なawkに操作できますが、より安全かもしれないawkによって解析されます)。これを断片的なシェル配列に分割しようとすると、問題が発生することがあります。 –