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 退出。
我有一个包含一些测量值的文件列表,我想将它们编译成一个文件。如果第二列包含任何行的数字数据(或者它不包含列的每一行的 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 退出。