linux - shell script to find a word in a list of files, all of them given as parameters -
i need simple shell program has this:
script.sh word_to_find file1 file2 file3 .... filen
which display
word_to_find 3 - if word_to_find appears in 3 files
or
word_to_find 5 - if word_to_find appears in 5 files
this i've tried
#!/bin/bash count=0 in $@; if [ grep '$1' $i ];then ((count++)) fi done echo "$1 $count"
but message appears:
syntax error: "then" unexpected (expecting "done").
before error was
[: grep: unexpected operator.
try this:
#!/bin/sh printf '%s %d\n' "$1" $(grep -hm1 "$@" | wc -l)
notice how script's arguments passed verbatim grep
-- first search expression, rest filenames.
the output grep -hm1
list of matches, 1 per file match, , wc -l
counts them.
i posted answer grep -l
require filenames never contain newline, rather pesky limitation.
maybe add -f
option if regular expression search not desired (i.e. search literal text).
Comments
Post a Comment