如果命令查看文件中的特定行和值

如果命令查看文件中的特定行和值

我想这是一个非常简单的命令,但我对 Ubuntu 真的很陌生。我基本上想命令 ubuntu 查看具有特定后缀的文件(QC.fastq.log),然后查看括号中第 3 行的值,然后如果该值高于 0.1,则完成另一个命令。

所以我有这个

for file in *QC.fastq.log

Do

If [ -e $file ] # this is where I thing the line and bracket command should be

then 

the next command

有任何想法吗?

示例文件:

6882 reads; of these:
  6882 (100.00%) were unpaired; of these:
    1088 (15.81%) aligned 0 times
    5792 (84.16%) aligned exactly 1 time
    2 (0.03%) aligned >1 times
84.19% overall alignment rate

答案1

这些要求相当严格!
如果你能应付匹配大于 0.09 的任何内容,那么这应该可行:

find -name '*QC.fastq.log' -exec sh -c 'sed -n 3p {} && grep -q \(0.0 || echo "DO SOMETHING"' \;
  • 对于任何与 glob 匹配的文件
  • 使用sed
  • 如果不||匹配(0.0(即永远小于 0.1),
  • 运行命令。

答案2

下面是完成这个工作的一个小 shell 脚本:

filemask="*QC.fastq.log"

while read -r -d $'\0' file
do
  if [ "$(echo "$(sed -nr "3s/^.*\((.*)%\).*$/\1/p}" "${file}") > 0.1" | bc)" = "1" ]
  then
    echo "${file}" is greater 0.1
  fi
done < <(find . -name "${filemask}" -print0)

相关内容