三剑客之sed功能及其用法
三剑客
三剑客
功能
grep
过滤
sed
过滤 替换(修改)
增删改查
awk
过滤 取列 统计计算
grep
过滤
参数
-i
过滤的不区分大小写
ignore case 忽略大小写
-v
取反
-n
显示行号
-o
显示过程
显示每次grep匹配到的内容
-E
支持扩展正则
egrep
-w
按照单词进行匹配
-l(小写字母L)
在系统中找出包含oldboy的文件(只想要文件名)
grep过滤的时候只显示文件名
-A
after
显示grep找出的内容及接下来的几行
-B
before
-C
-C2===
-R
递归进行过滤
grep -Rl 'oldboy' /etc/ /tmp/ /root/
sed
stream editor流编辑器
一行接一行
功能
增删改查
查
p查看 print
根据行号进行查找
sed -n ‘3p’lidao.txt
行号范围
‘1,5p’
使用正则过滤
sed -n ‘/oldb.y/p’ lidao.txt
使用正则表示范围
sed -n ‘/102/,/105/p’ lidao.txt 行是102的字符到105的字符
增
>>
a append
追加 在指定的行后面追加内容
sed '4aoldfox' oldboy.txt
insert
插入 在你指定的行上面插入信息
sed ‘3ixiaoming’ lidao.txt
c replace
把这一行的内容先清空 然后写入
sed ‘3c12306,lidao,HO’ lidao.txt
删
d delete
删除oldboy.txt中的第2行
删除oldboy.txt中的空行
不显示文件/etc/ssh/sshd_config 的空行或以#号开头的行
用sed来删除空行
显示空行 用sed sed -n ‘/^KaTeX parse error: Expected group after '^' at position 45: …用awk awk ‘/^̲/’
不显示空行 用sed sed -n ‘/^KaTeX parse error: Expected group after '^' at position 48: …p grep -v ‘^̲’ oldboy.txt
修改
s sub
s 替换
g global 全局替换
sed默认替换每一行的第1个内容(第1个匹配到的)
如果有g 则进行全局替换 替换每一行中匹配到的内容
使用的格式
sed 's#oldboy#oldfox#g' 'lidao.txt'
sed '[email protected]@[email protected]' 'lidao.txt'
后向引用
在前面有(##)把你要的内容保护起来,在后面两个##之间通过\数字来引用
先保护 再使用
echo 123456 |sed -r ‘s#(.*)#<\1>#g’
参数
-n
取消默认输出
-i
修改文件内容
-r
支持扩展正则
i.bak
先备份文件为oldboy.txt.bak
然后修改文件内容
sed命令执行过程
awk
取行与取列
过滤
计算
#不显示文件/etc/ssh/sshd_config 的空行或以#号开头的行
sed 's#oldboy#alex#g ’ oldboy.txt
目标 替换成什么
[[email protected] /oldboy]# echo 123456
想要结果是
<123456>
[[email protected] /oldboy]# echo 123456 |sed -r ‘s#(…)(…)(…)#\1<\2>\3#g’
12<34>56
[[email protected] /oldboy]#
[[email protected] /oldboy]# echo ‘<1><2><3><4><5><6>’
<1><2><3><4><5><6>
[[email protected] /oldboy]# echo 123456 |sed -r ‘s#(.)#<\1>#g’
<1><2><3><4><5><6>