sed
sed中的常用选项
-n
:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行-e
:多点编辑,对每行处理时,可以有多个Script-f
:把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script
,换行写-r
:支持扩展的正则表达式-i
:直接将处理的结果写入文件-i.bak
:在将处理的结果写入文件之前备份一份
地址定界
-
不给地址:对全文进行处理
-
单地址:
#
: 指定的行/pattern/
:被此处模式所能够匹配到的每一行
-
地址范围:
-#
,#- #,+#
- /pat1/,/pat2/
- #,/pat1/
-
~:步进
sed -n ‘1~2p’
只打印奇数行 (1~2 从第1行,一次加2行)sed -n ‘2~2p’
只打印偶数行
sed中的编辑命令Command
d
:删除模式空间匹配的行,并立即启用下一轮循环p
:打印当前模式空间内容,追加到默认输出之后a
:在指定行后面追加文本,支持使用\n实现多行追加i
:在行前面插入文本,支持使用\n实现多行追加c
:替换行为单行或多行文本,支持使用\n实现多行追加w
:保存模式匹配的行至指定文件r
:读取指定文件的文本至模式空间中匹配到的行后=
:为模式空间中的行打印行号!
:模式空间中匹配行取反处理
在替换时,可以加一下命令,实现大小写转换
\l
:把下个字符转换成小写。\L
:把replacement字母转换成小写,直到\U或\E出现。\u
:把下个字符转换成大写。\U
:把replacement字母转换成大写,直到\L或\E出现。\E
:停止以\L或\U开始的大小写转换
加g表示行内全局替换;
使用例子
[root@user ~]# cat test
aaa
bbbb
AABBCCDD
[root@user ~]# sed "/aaa/p" test #匹配到的行会打印一遍,不匹配的行也会打印
aaa
aaa
bbbb
AABBCCDD
[root@user ~]# sed -n "/aaa/p" test #-n不显示没匹配的行
aaa
[root@user ~]# sed -e "s/a/A/" -e "s/b/B/" test #-e多点编辑
Aaa
Bbbb
AABBCCDD
[root@user ~]# cat sedscript.txt
s/A/a/g
[root@user ~]# cat test
aaa
bbbb
AABBCCDD
[root@user ~]# sed -n "p" test #不指定行,打印全文
aaa
bbbb
AABBCCDD
[root@user ~]# sed "2s/b/B/g" test #替换第2行的b->B
aaa
BBBB
AABBCCDD
[root@user ~]# sed -n "1,2p" test #打印1-2行
aaa
bbbb
sed中的高级命令
h
:把模式空间中的内容覆盖至保持空间中H
:把模式空间中的内容追加至保持空间中g
:从保持空间取出数据覆盖至模式空间G
:从保持空间取出内容追加至模式空间x
:把模式空间中的内容与保持空间中的内容进行互换n
:读取匹配到的行的下一行覆盖 至模式空间N
:读取匹配到的行的下一行追加 至模式空间d
:删除模式空间中的行D
:删除 当前模式空间开端至\n 的内容(不再传 至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
grep的基本使用
Linux系统中grep
命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。grep
全称是Global Regular Expression Print
,表示全局正则表达式版本,它的使用权限是所有用户。
参数的使用
-A
:<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。-B
:<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。-C
:<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。-c
:统计匹配的行数-e
:实现多个选项间的逻辑or 关系-E
:扩展的正则表达式-f
FILE:从FILE获取PATTERN匹配-F
:相当于fgrep-i
--ignore-case #忽略字符大小写的差别。-n
:显示匹配的行号-o
:仅显示匹配到的字符串-q
: 静默模式,不输出任何信息-s
:不显示错误信息。-v
:显示不被pattern 匹配到的行,相当于[^] 反向匹配-w
:匹配 整个单词
Linux中的正则表达式
- 匹配任意单个字符,不能匹配空行
[]
匹配指定范围内的任意单个字符[^]
取反[:alnum:]
或[0-9a-zA-Z]
[:alpha:]
或[a-zA-Z]
[:upper:]
或[A-Z]
[:lower:]
或[a-z]
[:blank:]
空白字符(空格和制表符)[:space:]
水平和垂直的空白字符(比[:blank:]包含的范围广)[:cntrl:]
不可打印的控制字符(退格、删除、警铃…)[:digit:]
十进制数字 或[0-9][:xdigit:]
十六进制数字[:graph:]
可打印的非空白字符[:print:]
可打印字符