我有一个包含一些测量的文件列表,我想将它们编译成一个文件。如果第二列包含任何行数值数据(或者列的每一行都不包含NaN,则应将整个文件粘贴到新列的主文件(bar)中。
File1 File2 File3 Expected_Output Actual_Output
1 4 1 NaN 1 NaN 1 4 1 4
2 5 2 7 2 NaN 2 5 2 5
3 6 3 8 3 Nan 3 6 3 6
1 NaN
2 7
3 8
我的代码目前拒绝所有在第二列上都有一个NaN的文件。
for foo in *; do cat $foo | awk '{if ($2 ~ /[0-9]/) print $0}' >> bar ;done
答案 0 :(得分:2)
也许是这样的,在bash和awk中:
for f in files*;
do
if awk '$2 ~ /[0-9]/{exit 1}' $f # awk to detect numeric value, return 1 when
then # above, consider /^[0-9]*$/ or such, see comments
echo 1 # no need for this, so use :
else
echo 0 # cat $f >> masterfile.txt
fi
done
即。 awk仅用于检测$2
中是否存在单个数值,如果存在,则awk退出,退出代码为1,在bash中用于检测正匹配。默认情况下,awk以代码0退出。