目录
功能:过滤查找内容
分类: grep
egrep 扩展支持正则
fgrep 就是不支持正则


- grep -R /home/
- 匹配到二进制文件 .cache/mozilla/firefox/ro8zkjdr.default-default/cache2/entries/5773F8741C801CA8FA6328E33D4912694A3E2A8A
- [root@localhost ~]# grep -o "o" 1.txt
- o
- o
- o
- o
- o
- o

- [root@localhost ~]# egrep -l 'root' /etc/passwd
- /etc/passwd
- [root@localhost ~]# egrep -n 'root' /etc/passwd
- 1:root:x:0:0:root:/root:/bin/bash
- 10:operator:x:11:0:operator:/root:/sbin/nologin


- sed -r '/root/d' passwd 删除带有root的行
-
- sed -r '3d' passwd 删除第3行
-
- sed -r '3{d}' passwd 删除第3行
-
- sed -r '3{d;}' passwd {存放sed的多个命令}3{h,d},h暂存空间
-
- sed -r '3,$d' passwd 删除3-最后一行
-
- sed -r '$d' passwd 删除最后一行
- sed -r 's/root/aofo/' passwd 把root 替换成aofo
-
- sed -r 's/^root/aofo/' passwd 把以root 开头的行root替换成aofo
-
- sed -r 's/root/aofo/g' passwd 全部把root替换成aofo
-
- sed -r 's/[0-9][0-9]$/&.5' passwd 查找双数,结尾的词组&,替换成.5
- &有查询结果的含义
- sed -r 's/(mail)/E\1/g' passwd 把全部的词mail 换成Eail
- ()括号组合字符,\1调用括号
-
- sed -r 's/#(mail)#E\1/g' passwd

- sed -r 'w 111.txt' 1.txt 把1.txt 全部内容写入111.txt
-
- sed -r '/root/w 123.txt' passwd 把1.txt 写入111.txt
-
- sed -r '1,5w 123.txt' passwd 把paawd的1,5行写入123.txt文件
- [root@localhost ~]# sed -r 'a123' 1.txt 在文件1.txt内容中每行后面+123
- ##abc
- 123
- ##adc
- 123
-
- # sed -r '2a123' 1.txt 第二行后面,加上123行
- ##abc
- ##adc
- 123
-
- [root@localhost ~]# sed -r '2a 111\ 第二行后面加上1111 333`````
- > 333\
- > 444\
- > 2222' 1.txt
- ##abc
- ##adc
- 111
- 333
- 444
- 2222
- [root@localhost ~]# sed -r '2iaaaaaaaaaaaaaaa' 1.txt
- ##abc
- aaaaaaaaaaaaaaa 在第二行插入aaaaaaaaaaaaa
- sed -r '2c3333' 1.txt 把文件1.txt中第二行替换成3333
- ##abc
- 3333



注:不能存在特殊字符
- sed -e '1,3d' -e 's/123/1111111111111111111111111/g' 1.txt
- 删除1-3行,把1.txt中的123 替换成1111111111111
- ##bac
- #love
- #LOve
- Love
- i love
- i love you
- hhhh
- abcdefhhhgggff
- l.ve
- lve
- love
- le
-
- 1111111111111111111111111
- 124355656
- 11111111111111111111111114545678
- 11111
- 2222222222333333333
-
-

删除配置文件中#号的注释行

- sed -r '2,6s/^/#/' 1.txt 把文件1.txt2-6行开始换成#
-
- sed -r '2,6s/(.*)/#\1/' 1.txt ()内容可以被1引用
-
- sed -r 's/(.*)/#\1/' 1.txt 内容开头全部替换成#
-
- sed -r '2,6s/.*/#&/' 1.txt &匹配前面查找的内容



- cat /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- bin:x:1:1:bin:/bin:/sbin/nologin
-
- [root@mycat ~]# awk -F: '{print $1,$3}' /etc/passwd
- root 0
- bin 1



- [root@mycat ~]# awk 'BEGIN{print "ok"}END{print "--------"}' /etc/hosts
- ok
- --------

- [root@mycat ~]# awk -F: '{print "username is:" $1 "\t uid is:" $3 }' /etc/passwd |head -1
- ****打印 文件/etc/passwd第一行,第一列用户名 第三列UID*****
- username is:root uid is:0
- [root@mycat ~]# date | awk '{print "Month:" $2 "\nYear:" $1}'
- Month:06月
- Year:2022年

- [root@mycat ~]# awk '$0 ~/^root/' /etc/passwd
- root:x:0:0:root:/root:/bin/bash
-
- $0 : 计算行数
- ~ : 模糊查找;好像的意思
- ^root : 以root开头的
- ! : 反向;不是的意思
-
- awk -F: '$1 ~ /^root/' /etc/passwd
- root:x:0:0:root:/root:/bin/bash





3.6.3 数组
- #定义数组
- [root@mycat ~]# awk -F: '{username[++i]=$1}END{print username[1]}' /etc/passwd
- root
- #数组遍历
- [root@mycat ~]# awk -F: '{username[i++]=$1}END{for(i in username){print i,username[i]} }' /etc/passwd
- 10 games
- 11 ftp
- 12 nobody
- 13 systemd-network
- 14 dbus
- 15 polkitd
- 16 libstoragemgmt
- 30 usbmuxd
- 17 colord



