shell command : grep

CountPwd=grep -c "$1" $HODSDATAFILE
这句话是什么意思啊,grep,-c ,是干什么用的啊

grep -c 就是不显示内容,只打印行的数目

纠正一下措辞

grep 是用来从文件中搜索匹配行的。

比如你的文件名为filename,文件内容为:
aaa bbb safsad
asdf aaa sadf
asdfasdf

那么你用命令
grep "aaa" filename
就会得到前两行的内容
aaa bbb safsad
asdf aaa sadf

grep -c 就是不显示内容,只打印行号
那么
grep -c "aaa" filename
就会得到2

你提供的命令:
"$1" $HODSDATAFILE都是变量。

-c,–count
只打印匹配的行数,不显示匹配的内容。

[url]http://www.juyimeng.com/grep-usage-tips.html[/url]

  1. Grep命令选项 -? 同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。 -b,–byte-offset 打印匹配行前面打印该行所在的块号码。 -c,–count 只打印匹配的行数,不显示匹配的内容。 -f File,–file=File 从文件中提取模板。空文件中包含0个模板,所以什么都不匹配。 -h,–no-filename 当搜索多个文件时,不显示匹配文件名前缀。 -i,–ignore-case 忽略大小写差别。 -q,–quiet 取消显示,只返回退出状态。0则表示找到了匹配的行。 -l,–files-with-matches 打印匹配模板的文件清单。 -L,–files-without-match 打印不匹配模板的文件清单。 -n,–line-number 在匹配的行前面打印行号。 -s,–silent 不显示关于不存在或者无法读取文件的错误信息。 -v,–revert-match 反检索,只显示不匹配的行。 -w,–word-regexp 如果被<和>引用,就把表达式做为一个单词搜索。 -V,–version 显示软件版本信息。

先看看grep怎么用的。

[Linux初窥]grep

-- print lines matching a pattern (将符合样式的该行列出)
grep -- print lines matching a pattern (将符合样式的该行列出)

◎语法: [color=darkblue]grep [options] PATTERN [FILE...] [/color]

grep用以在file内文中比对相对应的部分,或是当没有指定档案时,
由标准输入中去比对。[color=red][size=medium] 在预设的情况下,grep会将符合样式的那一行列出。[/size][/color]

再看看选项(options)怎么用的,

[color=red] -c, --count[/color]

[b]不显示符合样式行,只显示符合的总行数。[/b]

最后看看 [quote]"$1" $HODSDATAFILE` [/quote]

了解这个,需了解shell编程,shell是怎么使用已经定义的变量的?是这样的,

[b]shell中使通过$这个dollar符号来引用变量的[/b]
而在这里,"$1"是什么意思呢?
这类似向java程序传参数一下,在java中使用args[0],args[1]这样获取参数,
shell中使用位置变量参数

[quote]在向脚本传递参数时,可以使用此位置变量来获取参数。
他们分别是:
$0:脚本名字。此变量包含地址,可以使用basename $0获得脚本名称。
$1:第一个参数
$2,$3,$4,$5,...一次类推。[/quote]

$HODSDATAFILE 这个就是引用一个常量,该常量为某一文件名。