Shell 的sed和awk 工具

幽映每白日,清辉照衣裳。这篇文章主要讲述Shell 的sed和awk 工具相关的知识,希望能为你提供帮助。




如:在2~50行 行首添加#号注释
:2,50 s/^/#/g


sed
输出所有匹配字符行
sed -n
"/字符/p" 文件名

删除所有匹配字符行
sed -i
"/字符/d" 文件名

将所有匹配字符替换成目标字符
sed -i
"s/字符/目标字符/g" 文件名

将指定行的匹配字符替换成目标字符
sed -e
2s/xxxx/yyyy/4 yf.txt

注:这里的2,表示第2行。
??这里的3,表示表示每行第3次出现的。
将匹配字符开头行,中的bash改为false
ssh $i
"sed -i /^hmsftp/ s#bash#false# /etc/passwd"

在每行的前面添加“123”
sed -i
"s/^/123/g" 文件名

在每行的行尾添加“abc”
sed -i
"s/$/abc/g" 文件名

在匹配字符行的下方添加“abc”
sed -i
"/88888/a\\abc" 文件名

在匹配字符行的上方添加“abc”
sed -i
"/88888/i\\abc" 文件名

在第三行下面添加888888
  sed -i "3a\\888888:" /opt/name.txt
=====================




Shell 的sed和awk 工具

文章图片



正则表达式应用:grep




Shell 的sed和awk 工具

文章图片



grep
"0*" /etc/passwd  “0”至少出现0次

grep
"00*" /etc/passwd  “0”至少出现1次

grep
"000*" /etc/passwd “0”至少出现2次



grep
[r09] /etc/passwd 包含中括号中的任意一个字符的内容都会出现





Shell 的sed和awk 工具

文章图片



grep
[^r09] /etc/passwd 不包含中括号中的任意一个字符的内容都会出现(取反)





Shell 的sed和awk 工具

文章图片





grep
"[0-9]\\2\\" /etc/passwd //匹配包含 0-9 数字,且有两位数的行,精确匹配。



grep
"[0-9]\\2,\\" /etc/passwd  匹配包含 0-9 数字,且有两位数或两位数以上的行



grep
"[0-9]\\1,3\\" /etc/passwd 配包含 0-9 数字。且出现过1次2次或者3次都可以。精确匹配。



egrep
-v "^$|^#" /etc/vsftpd/vsftpd.conf 把空白行或者#号开头的去掉。





Shell 的sed和awk 工具

文章图片





Egrep
(xyz)+ passwd

























-----------输出相关----------


sed -n
6p passwd  将文件中的第6行输出。



sed -n
6,8p passwd 将文件中的第6到第8行输出。



sed -n
6p; 8p passwd 将文件中的第6和第8行输出



sed -n
p; n passwd  将文件中的奇数行输出



sed -n
n; p passwd  将文件中的偶数行输出



sed -n
1,10n; p passwd 将文件中1-10行中的偶数行输出

sed -n
1,10p; n passwd 将文件中1-10行中的奇数行输出



sed -n
$p passwd 将文件中最后一行输出。

sed -n
/root/= passwd 将文件中包含root的行号输出



sed  5q passwd 输出文件的前5行信息后退出


--------------插入相关------------
  sed /root/i I AM OK passwd 在包含root的行前面插入内容。


  sed /root/a I AM OK passwd 在包含root的行后面插入内容。




sed
15a HHHHHHHHH passwd 在15行后面插入内容



-------删除相关------------指的是视图,临时数据删除,不会动用原文件       


sed
1d passwd 删除第一行

sed
4,7d passwd 删除4到7行



  sed $d passwd  删除最后一行


  sed /^$/d passwd 删除空行


sed
/root/d passwd 删除带有root的行

sed
/^root/d passwd 删除以root开头的行



sed
/root$/d passwd 删除以root结尾的行

sed
/nologin$/!d bb.txt 删除不以nologin结尾的行



-------替换相关------
sed
s/root//g passwd 把所有root替换成空

sed 1,3s/root//g passwd 把1-3行的root替换成空
sed
/root/c HHHHH passwd 把含有root的行替换成指定字符



------如果要修改文件内容就加一个i参数----
sed -i
s/enforcing/disabled/ /etc/sysconfig/selinux





-----------AWK相关-处理列-------



























































【Shell 的sed和awk 工具】


    推荐阅读