-1

を含むテキストファイルで

aa bb,bb dd,cc dd,dd dd,0,5

そして私は実行します

 y=$(awk -F"," -v pt=$test pe=$test1 '{if($1==pt && $2==pa) print $5}' alpha.txt)
 x=$(awk -F"," -v pt=$test pe=$test1 '{if($1==pt && $2==pa) print $6}' alpha.txt)
 add=$((x + var))
 add1=$((y + var))

と言うエラー

expr:非整数引数

$add の場合、 $add1 のみが機能します。私はxをエコーし​​、値が含まれていることを発見しましたが、出力をテストするために「A」を追加すると、Aのみが表示されることがわかりました。テキストにもう1つのフィールドを追加すると、

aa bb,bb dd,cc dd,dd dd,0,5,6

それはすべてのためにうまく動作します。だから私はテキストファイルの最後の列にフィールドの列をもう1つ追加することにしました

awk -F"," '{$(NF+1)=++i;}1' OFS ="," alpha.txt

しかし、何も追加されていないようです。誰かが理由を指摘したり、必要なものを達成するためのより良い方法を提供したりできますか? どうもありがとう。後ろに区切り文字なしで $6 が抽出されたことが原因ではないかと疑っています。$var を使用して 0 を 3 に、5 を 8 にインクリメントしようとしています。

4

2 に答える 2

0

@steveのコードを構築して、これを試してください:

y=$(awk -F, -v pt="$test" -v pe="$test1" '{print ($1==pt && $2==pe) ? $5 : 0}' alpha.txt)
x=$(awk -F, -v pt="$test" -v pe="$test1" '{print ($1==pt && $2==pe) ? $6 : 0}' alpha.txt)
add=$((x + var))
add1=$((y + var))

あなたの問題は、xとyが設定されていないことがあるだけでなく、「pe」を設定していたが「pa」をテストしていたことだと思います。

コードの前半で var が何らかの整数値に設定されていると仮定します。

于 2013-01-27T12:23:18.473 に答える
0

pt私は疑っています(ただし、 、 、peおよびの値の例を述べていないか、例を示していないため、確かに言うことはできませんvar)が、直面している問題には、 に渡された変数を引用することが含まれていると思いますawk。また、コードを少しクリーンアップして、よりぎこちなく見えるようにしました。以下はもちろんテストされていませんが、うまくいくはずです:

y=$(awk -F, -v pt="$test" -v pe="$test1" '$1==pt && $2==pa { print $5 }' alpha.txt)
x=$(awk -F, -v pt="$test" -v pe="$test1" '$1==pt && $2==pa { print $6 }' alpha.txt)

echo "$y"との結果はecho "$x"?エラーメッセージは何ですか?

于 2013-01-27T09:20:51.737 に答える