开发者

linux command grep -is "abc" filename|wc -l

what does the s mean there and also when pipe into wc what is that for? I know it eventually count the number of abc appeared in file filename, but not sure about the optio开发者_如何学运维n s for and also pipe to wc mean

linux command grep -is "abc" filename|wc -l

output

    47


-s means "suppress error messages about unreadable files" and the pipe to wc means "take the output and send it to the wc -l command" which effectively counts the number of lines matched. You can accomplish the same with the -c option to grep: grep -isc "abc" filename


Consider,

command_1 | command_2

Role of the pipe is that- it takes output of command written before it (command_1 here) and supplies that output to the command written after it (command_2 here).


The man page has everything you would want to know about the options for grep:

   -s, --no-messages
          Suppress  error  messages about nonexistent or unreadable files.
          Portability note: unlike GNU grep, traditional grep did not con-
          form to POSIX.2, because traditional grep lacked a -q option and
          its -s option behaved like GNU grep's -q option.  Shell  scripts
          intended to be portable to traditional grep should avoid both -q
          and -s and should redirect output to /dev/null instead.

The pipe to wc -l is what gives you the count of how many lines the string "abc" appeared on. It isn't necessarily the number of times the string appeared in the file since one line with multiple occurrences is going to be counted as only 1.


grep man page says:

-s, --no-messages         suppress error messages

grep returns the lines that have abc (case insensitive) in them. You pipe them to wc to get a count of the number of lines.


From man grep:

   -s, --no-messages
          Suppress  error  messages about nonexistent or unreadable files.

The wc command counts line, words and characters. With -l it returns the number of lines.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜