我无法从bash代码获得所需的输出。
我有一个文本文件:
1 0.00 0.00
2 0.00 0.00
3 0.00 0.08
4 0.00 0.00
5 0.04 0.00
6 0.00 0.00
7 -3.00 0.00
8 0.00 0.00
所需的输出应仅为非零值:
0.08
0.04
-3.0
这是我的代码:
z=0.00
while read line
do
line_o="$line"
openx_de=`echo $line_o|awk -F' ' '{print $2,$3}'`
IFS=' ' read -ra od <<< "$openx_de"
for i in "${od[@]}";do
if [ $i != $z ]
then
echo "openx_default_value is $i"
fi
done
done < /openx.txt
但它也会得到零值。
答案 0 :(得分:1)
要仅从第2列和第3列中获取非零值,请尝试:
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///./*":"${workspaceRoot}/*"
},
"url": "http://localhost/CountrySite/v2/",
"webRoot": "${workspaceRoot}"
},
工作原理:
$ awk '$2+0!=0{print $2} $3+0!=0{print $3}' openx.txt
0.08
0.04
-3.00
测试以查看第二列是否为非零。如果它不为零,则执行print语句。
我们想在第二列$2+0 != 0 {print $2}
和零之间进行数值比较。为了告诉awk将$2
视为数字,我们首先向其添加零,然后进行比较。
第3列也是如此。
考虑此输入文件:
$2
要使用找到的每个值打印列名称,请尝试:
$ cat openx2.txt
n first second
1 0.00 0.00
2 0.00 0.00
3 0.00 0.08
4 0.00 0.00
5 0.04 0.00
6 0.00 0.00
7 -3.00 0.00 8 0.00 0.00
答案 1 :(得分:1)
awk '{$1=""}{gsub(/0.00/,"")}NF{$1=$1;print}' file
0.08
0.04
-3.00