Linux 中多个文件中的值小于特定数字时打印文件名

mas*_*ena 0 awk

我有多个文件,如下所示:所有格式都相同。

> Calss1.txt
No grade
1     93
2     45
3     66

> Calss2.txt
No grade
1     91
2     99
3     76
Run Code Online (Sandbox Code Playgroud)

我想找到任何等级小于 60 的文件名,然后输出到另一个文件。例如,愿望会喜欢:

> output
Calss1.txt
Run Code Online (Sandbox Code Playgroud)

我尝试过:

cat .txt | awk '{if($2==$2+0 && $2<50)print ```???```}'
Run Code Online (Sandbox Code Playgroud)

我不知道如何在条件下打印文件名。任何提示都很感激。谢谢。

pmf*_*pmf 5

使用 GNU Awk,您可以使用内置变量FILENAME在第一个匹配条件时打印当前输入文件的名称,然后使用以下命令跳转到下一个输入文件nextfile

awk 'FNR>1 && $2<50 {print FILENAME; nextfile}' Class*.txt
Run Code Online (Sandbox Code Playgroud)
Class1.txt
Run Code Online (Sandbox Code Playgroud)