Shell Scripting:好主意,写得不好

时间:2014-02-01 10:17:23

标签: shell scripting

我必须创建一个shell脚本,该脚本返回一个列表,其中包含3行或更多行中包含'hello'字样的所有文件。

我知道这个想法,但我认为我写的剧本不好。

nr=$(ls | wc -l )

for ((i = 0; i < nr ; i++));do

    fis[$i]=$(ls | sed -n '$i p')

done

for ((i = 0; i < nr ; i++));do

    if [$(cat $(fis[$i]) | grep 'hello' | wc -l) -gt 2 ];

    then

        echo $( fis[$i])

    fi

done

首先我取一个返回文件数的“nr”,而不是从0到nr的数字,并放入一个数组fis [i]所有文件,用sed选择每一行。而且,如果fis [i]在至少3行上包含'hello',我会显示它。

1 个答案:

答案 0 :(得分:1)

我认为你编写了太多代码。

您可以使用此for loop

files=()
for f in *; do
   [[ $(grep -c "hello" "$f") -gt 2 ]] && files+=("$f")
done

printf "List of files with more than 2 occurrences of 'hello' is:\n"
printf "%s\n" "${files[@]}"