grep

grep ”  grep “”  grep -v ”  -i 忽略大小写  -w 匹配单词  -G 普通正则  -f obtain PATTERN from FILE
output 输出选项:
-n print line number with output lines  -H print file name with output lines 一般会输出名字  -h 不输出文件名前缀  -o show only the part of a line matching PATTERN  -B 打印文本及前面几行 # backgroud  -A 打印文本及后面几行 #ahead  -m 输出匹配的前多少行 =grep chr file|head -n int
‘egrep’即‘grep -E’egrep ‘chr{2,}’ file 或egrep ‘chr{2,4}’ file #{min,max} 大于等于min小于等于max。详情请参考下面截图示例。grep -e ” -e ” # either or both match output [grep的或选项]grep ” |grep ” [grep 的和选项] 
   -A // grep chr -A1 ref.fa 
  
 
   -B // 
  
 
   -h // 
  
 
   -w //grep -w “chr1” ref.fa 
  
 
   -v 去除match 
  
 
   -n 输出match的行数 
  
 
   grep –color //我一般会把它键入环境变量 .bashrc [alias grep = ‘grep –color=auto’] 
  
 
   -E 
  
 
   -c 计算match 数 不含-A/-B行数。相当于grep chr file|wc -l 
  
 
   -l grep的内容列出文件名,有点像win系统的查找内容显示文件名 //-L反向功能 
  
 
   -o 只输出匹配上的字符 
  
 
   grep -E “[1-9]+” == egrep “[1-9]+” || echo this is a test line. | grep -o -E “[a-z]+.”

切记grep ‘>’file一定要加‘’,否则清空文件,因为我总用grep > file 这么清空文件!!哈哈

grep不显示指定字段的行_正则

grep不显示指定字段的行_grep_02

grep不显示指定字段的行_正则_03

grep不显示指定字段的行_grep不显示指定字段的行_04

多匹配请使用双引号

grep不显示指定字段的行_grep不显示指定字段的行_05


grep不显示指定字段的行_正则表达式_06


echo gun is not unix | grep -b -o “not”  7:not
一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。
grep “text” . -r -n
.表示当前目录。
cat patfile  aaa  bbb  echo aaa bbb ccc ddd eee | grep -f patfile -o
grep “main()” . -r –include *.{php,html}  grep “main()” . -r –exclude “README”  grep “main()” . -r –exclude-from filelist
只在目录中所有的.php和.html文件中递归搜索字符”main()”  在搜索结果中排除所有README文件  在搜索结果中排除filelist文件列表里的文件  :参看参数 -R –include=FILE_PATTERN等。
grep -w ‘[vV]ivek[0-9]’  grep ‘^\s[a-z]*’ ref.changelog.2  schr012 chr012 ^\s以空格开头  $ grep ‘\< chr.1\ >’ ref.changelog.2  schr11 chr11 
\< 匹配单词前面的空字符串  \ > 匹配单词后面的空字符串 #之间没有空格
grep ‘^..$’ 文件名
打印出只有两个字符的所有行:
egrep ‘[[:digit:]]{1,3}.’ file # eg168.
egrep ‘co{1,2}l’ file  输出co和l中有一个或者2个字符的行
//以下内容单纯粘贴,

正则表达式限定符

限定符

描述

. 匹配任意的一个字符。 ? 匹配前面的子表达式,最多一次。 * 匹配前面的子表达式零次或多次。 + 匹配前面的子表达式一次或多次。 {N} 匹配前面的子表达式 N 次。 {N,} 匹配前面的子表达式 N 次到多次。 {N,M} 匹配前面的子表达式 N 到 M 次,至少 N 次至多 M 次。 - 只要不是在序列开始、结尾或者序列的结束点上,表示序列范围。 ^ 匹配一行开始的空字符串;也表示字符不在要匹配的列表中。 $ 匹配一行末尾的空字符串。 \b 匹配一个单词前后的空字符串。 \B 匹配一个单词中间的空字符串。 \< 匹配单词前面的空字符串。 > 匹配单词后面的空字符串。

grep 和 egrep

egrep 等同于 grep -E 。它会以扩展的正则表达式的模式来解释模式。下面来自 grep 的帮助页:

基本的正则表达式元字符 ?、+、 {、 |、 ( 和 ) 已经失去了它们原来的意义,要使用的话用反斜线的版本 \?、+、{、|、( 和 ) 来代替。 传统的 egrep 并不支持 { 元字符,一些 egrep 的实现是以 { 替代的,所以一个可移植的脚本应该避免在 grep -E 使用 { 符号,要匹配字面的 { 应该使用 [}]。

GNU grep -E 试图支持传统的用法,如果 { 出在在无效的间隔规范字符串这前,它就会假定 { 不是特殊字符。

例如,grep -E ‘{1’ 命令搜索包含 {1 两个字符的串,而不会报出正则表达式语法错误。

POSIX.2 标准允许这种操作的扩展,但在可移植脚本文件里应该避免这样使用。

参考: •grep 和 regex 帮助手册页(7) •grep 的 info 页

参考:http://man.linuxde.net/grep https://linux.cn/article-6941-1.html

那么问题来了: 用linux命令查看一个字符串在文件里出现的次数,并只输出match的字符??