上述选项中有个-E选项,这个就是可以支持使用扩展的正则表达式,当然这个选项有另个写法:grep -E == egrep
还有个-F选项,这个用法是相当于fgrep的,即grep -F==fgrep不支持正则表达式的使用,也就是使用它时,你可以使用通配符。
举个示例:
grep的用法多种多样,大家可以多加尝试!
3.sedsed:Stream EDitor,又名行编辑器。
sed:是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓存区中,称为“模式空间”(patternspace),接着用sed命令处理缓存区中的内容,处理完成后,把缓存区的内容送往屏幕。然后读入下一行,执行下一个循环。如果没有使用诸如‘D’的特殊命令,那么会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
sed的功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等,且支持正则表达式!
使用方法:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用[option]:
-n:不输出模式空间内容到屏幕,即不自动打印
-e:多点编辑,-e sm2 -e sm1
-f /PATH/SCRIPT_FILE:从指定的脚本文件中,读取出脚本内容,并合并到sed COMMAND中进行执行。通俗的理解为将脚本写在了文件中。
-r:支持使用扩展正则表达式
-i:直接修改源文件。如果在命令中加入了 -i 选项,源文件的内容将会被直接修改掉。
-i[SUFFIX]:这还是-i 选项,这个选项的意思是说,如果在使用该选项的过程中指定了后缀名称,那么该命令在执行的过程中会先将源文件备份成以[SUFFIX] 为后缀的文件,然后对文件进行操作
从使用方法中看到了{script-only-if-no-other-script},这个代表了在模式空间和保留空间的处理过程,也就是怎么处理的,这里称为了script。那么这个script是什么呢?怎么书写呢?下面就来说下有关地址定界、编辑命令、高级编辑命令,这些就是组成scrip的元素。
地址定界:就是说明用来处理一行中的那个些部分的。
不给地址:对全文进行处理
#:指定的行/pattern/能够被模式匹配到的每一行
#,#:从第n行到第m行
#,+#:从第n行,加上其后面m行
/pat1/,/pat2/:符合第一个模式和第二个模式的所有行
#,/pat1/:从第n行到符合 /pat1/ 这个模式的行
1~2 :~ 这个符号表示步进,1~2 表示的是奇数行
2~2:表示的是偶数行
编辑命令:地址定界后,对范围内的内容进行相关编辑。
d:删除模式空间匹配的行,并立即启用下一轮循环
p:打印当前模式空间内容,追加到默认输出之后
q:读取到指定行之后退出
a [\]text:在指定行后面追加文本支持使用\n 实现多行行后追加
i [\]text:在行前面插入文本
c [\]text:替换行为单行或多行文本
w /path/somefile:保存模式匹配的行至指定文件
r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
=:为模式空间中的行打印行号
!:模式空间中匹配行取反处理
s///:查找替换, 支持使用其它分隔符,s@@@ ,s###
;:对一行进行多次操作的命令的分割
&:配合s///使用,代表前面所查找到的字符等,&sm ;sm&。
g:行内全局替换。也可以指定行内的第几个符合要求的进行替换:2g,就表示第2个替换。
p:显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
高级编辑命令:也是对定界范围内的内容进行处理了,不过是处理起来更加高级。
P:打印模式空间开端至\n 内容,并追加到默认输出之前
h:把模式空间中的内容覆盖至保持空间中;m > b
H:把模式空间中的内容追加至保持空间中; m>>b
g:从保持空间取出数据覆盖至模式空间; b>m
G:从保持空间取出内容追加至模式空间; b>>m
x:把模式空间中的内容与保持空间中的内容进行互换; m <->b
n:读取匹配到的行的下一行覆盖至模式空间; n>m
N:读取匹配到的行的下一行追加至模式空间; n>>m
d:删除模式空间中的行; delete m
D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的 输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d 命令那样启动正常的新循环
看着有点有,这里写几个用法示例: