如何编写一个 shell 脚本,仅显示当前目录中超过 8 行的文件的内容?

如何编写一个 shell 脚本,仅显示当前目录中超过 8 行的文件的内容?

我是 shell 脚本的新手。如何编写一个 shell 脚本,仅显示当前目录中超过 8 行的文件的内容(在 Ubuntu 中)?

我知道我必须使用命令head并采用for遍历所有文件的方法,以及每当文件超过 8 行时计数器就会增加的方法,但出了问题。当我执行脚本时,它不会产生它应该产生的输出。

 #!/bin/bash
 for fis in *
 do
    cat $fis
    head -8 $fis
 done

   contor=0
   while [ contor -le 100 ] 
   do 
        echo $contor
        contor=`expr $contor + 1`
   done 

答案1

这是一个非常简单的解决方案:

for f in *
do                                                                                                                                                         
    if [ $(wc -l "$f" | awk '{print $1}') -gt 8 ]; then                                    
        cat "$f" # print the file content                                              
        #echo $f # print the filename                                                
    fi                                                                               
done    

该命令wc -l $f | awk '{print $1}'返回文件的行数,并且条件验证它是否大于 8。如果您只是要打印文件的内容,请考虑使用命令“more”而不是 cat。

相关内容