用于查找文件名中特定单词的Linux脚本

问题描述:

我需要帮助编写脚本以执行以下在a部分中所述的操作。用于查找文件名中特定单词的Linux脚本

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

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

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

这就是我到目前为止所得到的结果,但它不起作用。它说它在/ etc/fstab中找到了0个“defaults”字样。我相信我的代码是错误的,但无法找出问题所在。帮助表示赞赏。

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

请不要使用'“'在你的代码,使用常规的双引号'“'所以你的代码可以被复制粘贴。 – PesaThe

你需要使用命令替换,你遍历字符串: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 
+0

它的工作!谢谢你! – Gabriel