【发布时间】:2014-04-27 20:52:18
【问题描述】:
这里是新手。
从根本上说,我有一个以 {print $4} 结尾的 awk 命令,当它被输入到 echo > file 命令时,它不会打印所请求字段的值。输出为空白。
我正在编写一个 bash 脚本,目标是创建一个包含四个字段的文件:主题、结构、侧面和体积,例如
136 Hippocampus Left 3450
我正在从带有一堆标题行的特定主题文件中绘制,然后是一个制表符分隔的大脑结构、体积和其他数据表。
12 17 3450 3450.7 Left-Hippocampus
脚本遍历这些文件,循环遍历主题,然后是结构和边,并且对于每个组合,使用 awk 将 $side-$struct 与文件中的适当字段匹配,然后打印带有卷的字段。然后它将所有数据回显到输出文件。
set volume = `awk -v side="$side" -v struct="$struct" '$5 ~ /$side-$struct/ {print $4}' filename.stats
echo "${subj} ${struct} ${side} ${volume}" >> $outfile
但是,该文件始终显示前三列的适当值,但从不显示音量值;该列是空白的。
当我在标准输出中运行示例 awk 命令时,
awk '$5 ~ /Left-Hippocampus/ {print $4}' filename.stats
它返回我想要的数字。
为什么脚本不能正确打印到 $outfile 卷数据以及循环变量的数据?
我看到人们谈论缓冲速度,我尝试过刷新;我已经用 cat 喂给了 awk 数据文件;在用进一步的 -v 标志声明它们之后,我尝试从 awk 打印所有变量;似乎没有任何效果。最终他们都做同样的事情,打印 $outfile 中的前三列而不是第四列。
提前感谢您的帮助,这让我发疯了!该脚本实际上已经准备好运行一天多...
【问题讨论】:
-
尝试类似 echo "${subj} ${struct} ${side} ${volume} Hello" >> $outfile?也许音量变量是空的?