Linux bash随笔
看SUSE认证的Bash脚本component.sh,刚看没几句,就发现一个关于grep的陌生用法:
local biosInfo=$( hwinfo --bios )
local company=$( echo "$biosInfo" | grep -m 1 -A 5 "^ System Info:" | grep -m 1 "^ Manufacturer:" | cut -d "\"" -f 2
grep -m和 -A的用法其实在grep中不常见
man grep了下,看了个大概意思
grep -m x "搜索内容",代表找到跟数字x匹配的搜索内容后停止
echo "$biosInfo" | grep -m 1 -A 5 "^ System Info:" 这句的意思就是从biosInfo中找到以System Info开头的部分,并且在找到一次后就停止搜索System Info了,如果没有-m 1的话,就是要找到所有匹配开头为System Info的内容,因为脑子不太灵,就多写点,以防以后又记不住是咋回事儿了,我自己试了下grep -m 2就可以匹配2个符合要求的搜索项,如果没有第二个匹配项,就会只显示第一个匹配项。
再说下grep -A x "搜索内容" 其中x也是数字,-A的含义是,找到匹配的搜索内容后,显示搜索内容后x行的文本echo "$biosInfo" | grep -m 1 -A 5 "^ System Info:" 这句的含义就是在$biosInfo中搜索匹配开头为system info的内容一次,然后显示找到system info后面的5行内容
这句中有一个cut,顺便就凭记忆补充下cut的用法,这里cut -d 后面接分割符号,代表从分割符号处截取,-f x x代表是截取的第几个部分,比如用"分割的部分有2个,那么从1,开始算,就选取第二处用"分割的内容。(其中\是用来给"转义的)