linux命令三剑客grep/sed/awk

本文介绍了Linux系统中grep和sed命令的使用。grep用于从大量文本中匹配所需部分,介绍了其多种参数选项及测试示例。sed主要用于数据的选取、替换、删除、新增,说明了选项和动作的含义,并给出了多个小例子,还提及加 -i 可修改文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

grep 主要作用就是从大量的文本中匹配你所需要的部分

grep [-cinvABC] ‘word’ filename

  • -c 行数
  • -i 不区分大小写
  • -n 显示行号
  • -v 取反
  • -r 遍历所有子目录
  • -A 后面跟数字,过滤出符合要求的行以及下面n行
  • -B 后面跟数字,过滤出符合要求的行以及上面n行
  • -C 后面跟数字,同时过滤出符合要求的行以及上下各n行
  • -E egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式.
    测试文本create.log
  1. -c 匹配的行数,输出行数
grep -c "install" create.log


2. -i 匹配不区分大小写,输出所以内容

grep -i "dddd" test


3. -n 输出所有并显示行数

grep -n "install" create.log


4. -v 取反,输出所有没有“install”的行

grep -inv "dddd" test


5. -r 查一个目录下的所有文件中包含“install”的行,并重定向到test.txt中

grep -r "play" bb


一些简单例子:


sed

主要是用来讲数据进行选取、替换、删除、新增的命令,如果不加-i选项是不会更改文件内容的,如果不确定的情况下,尽量不要更改系统中的配置文件。
sed [选项] ‘[动作]’ 文件名
选项

  • -n :一般sed命令会把所有数据都输出到屏幕上,如果加上-n 则会把经过sed命令处理过的命令输出到屏幕上。
  • -e: 允许对输入数据应用多条sed命令编辑
  • -i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作

  • a:追加,在当前行后添加一行或多行
  • c:行替换,用c后面的字符串替换原数据行
  • i:插入,在当前行插入一行或者多行
  • d:删除,删除指定的行
  • p:打印,输出指定的行
  • s:字符串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g"

小例子:

test文件内容
abaabaaba34aa
AAAAAAAAAAA
BBBBBB1BBBBB
CCCCCBB2BBBB
DDDDddddd7dd
ddddddddd8dd
asdfgggggggggg
sdfetteedfsdf
thidk sdfkga
  • -n :一般sed命令会把所有数据都输出到屏幕上,如果加上-n 则会把经过sed命令处理过的命令输出到屏幕上。
[root@localhost ~]# sed -n '/thi/'p test
thidk sdfkga
  • sed ‘2a hello word’ test在文件test中第二行后面添加一行内容 hello word
[root@localhost ~]# sed "2a hello world" test
abaabaaba34aa
AAAAAAAAAAA
hello world
BBBBBB1BBBBB
...
  • sed ‘2i hello word’ test在文件test中第二行前面添加一行内容 hello word
[root@localhost ~]# sed "2i hello world" test
abaabaaba34aa
hello world
AAAAAAAAAAA
BBBBBB1BBBBB
...
  • sed “2d” test 删除test文件内容中的第二行
[root@localhost ~]# sed "2d" test
abaabaaba34aa
BBBBBB1BBBBB
...
  • sed “2c 222222” test 将 test 文件内容中的第四行替换为 444
[root@localhost ~]# sed "2c 222222" test
abaabaaba34aa
222222
BBBBBB1BBBBB
...
  • sed “2s/AAA/aAa/g” test将第一行的aaa更改为a1a
[root@localhost ~]# sed "2s/AAA/aAa/g" test
abaabaaba34aa
aAaaAaaAaAA
BBBBBB1BBBBB
...
  • 以上增删改的命令中增加-i参数就会去真实的修改文件,而不会输出到屏幕
[root@localhost ~]# sed -i "2s/AAA/aAa/g" test
[root@localhost ~]# cat test
abaabaaba34aa
aAaaAaaAaAA
BBBBBB1BBBBB
...
  • sed [-i] -e “2a helloworld” -e “3a helloworld” test(加-i修改文件,以上同理) 使用-e命令执行多条sed命令。
[root@localhost ~]# sed -e "2a helloworld" -e "3a helloworld" test
abaabaaba34aa
aAaaAaaAaAA
helloworld
BBBBBB1BBBBB
helloworld
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值