linux脚本查找文件名

时间:2017-12-03 00:16:29

标签: linux bash

我需要帮助编写脚本以执行以下部分a中所述的操作。

以下代码将输出$ filename中找到的所有单词,每个单词都在单独的行中。

for word in “cat $filename”
do
    echo $word
done 

a。编写一个接收两个参数的新脚本。第一个是文件名($ 1而不是$ filename),第二个是你要搜索的单词($ 2)。在for循环中,使用if语句将$ 2与$ word进行比较,而不是echo $ word。如果它们相等,则将一个添加到名为COUNT的变量中。在for循环之前,将COUNT初始化为0,在for循环之后,输出一条消息,告诉用户$ 2出现$ 2的次数。也就是说,在echo语句中输出$ COUNT,$ 2和$ 1,但要确保在这里有一些文字,这样输出实际上对用户有意义。提示:要比较两个字符串,请使用符号[$ string1 == $ string2]。要向变量添加一个,请使用符号X = $((X + 1))。如果每条指令都在一个单独的行上,则不需要任何分号。在/ etc / fstab上测试你的脚本,使用默认值(应该找到7次)

这是我到目前为止所做的,但它不能正常工作。它说它找到0次出现的单词"默认"在/ etc / fstab中。我确信我的代码是错误的,但无法解决问题。感谢帮助。

count=0
echo “what word do you want to search for?: “
read two
for word in “cat $1”
do
    if [ “$two” == “$word” ]; then
        count=$((count+1))
    fi
done
echo $two appeared $count times in $1

1 个答案:

答案 0 :(得分:1)

您需要使用命令替换,您正在遍历此字符串:cat first_parameter

for word in $(cat "$1")

使用grep更好地完成此操作,解释How do I count the number of occurrences of a word in a text file with the command line?

grep -o "\<$two\>" "$1" | wc -l