-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 回答