Linux newbe;
我有一个包含100多个目录的目录,每个目录都有一个内容相似的文件。
------------------------------------------------------------------------------
Final Restraint Analysis for coords: md.rst
Restraints, deviations, and energy contributions: pencut = -0.00
------------------------------------------------------------------------------
First atom Last atom curr. value target deviation penalty
------------------------------------------------------------------------------
*H43 BOC 1 -- H ALA 2: 4.506 4.760 0.000 0.000 d 0: 0
在这些文件中,有以下几行,如最后一行。我需要在每行中搜索阈值的列罚值,如果大于该行,则应打印到stdout或文件中。 我从使用cut开始,但在定界符方面遇到了麻烦,即使我会剪切正确的行文,我也不知道如何保存行号并将此行打印到文件或stdout。
感谢您的帮助
答案 0 :(得分:0)
在很多帮助下,我终于有了解决方案:
#! /bin/bash
cutoff=5.0
for i in sim_results_rep*; do
while read -r LINE; do
echo $LINE | grep 'First atom' > /dev/null
if [ $? -ne 0 ]
then
continue
else
read -r LINE
while true; do
read -r LINE
echo $LINE | grep 'Total distance penalty' > /dev/null
if [ $? -ne 0 ]
then
x=`echo "$LINE" | awk '{print $11}'`
if [ `echo "$x > $cutoff" | bc` == 1 ]
then
echo "In file $i, the follwing distance has a penalty higher than $cutoff"
echo $LINE
else
continue
fi
else
break
fi
done
break
fi
done < $i/*.nmrout
done