linux算术表达式

时间:2013-01-26 16:45:11

标签: bash awk

包含

的文本文件
  

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:非整数参数

for $ 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

2 个答案:

答案 0 :(得分:0)

我怀疑(虽然我不能肯定地说,因为你没有陈述或给出ptpevar的价值的例子,但我认为您遇到的问题涉及引用传递给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"的结果是什么?什么是错误消息?

答案 1 :(得分: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在代码的前面设置为某个整数值。