awk 只根据满足条件的一行元素打印整列

Awk print entire column based on only one row element fulfilling condition

我有一个包含一些测量值的文件列表,我想将它们编译成一个文件。如果第二列包含任何行的数字数据(或者它不包含列的每一行的 NaN),则应将整个文件粘贴到新列的主文件(栏)中。

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 ( ~ /[0-9]/) print [=11=]}' >> bar ;done

可能是这样的,在 bash 和 awk 中:

for f in files*; 
do 
    if awk ' ~ /[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 仅用于检测 中是否存在单个数值,如果存在,awk 以退出代码 1 退出,它在 bash 中用于检测正匹配。默认情况下 awk 以代码 0 退出。