Shell 的sed和awk 工具

Posted 骸音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

=====================




正则表达式应用:grep




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

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

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


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




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





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



Egrep
(xyz)+ passwd



Shell




Shell







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


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






Shell






Shell





Shell




Shell









以上是关于Shell 的sed和awk 工具的主要内容,如果未能解决你的问题,请参考以下文章

Shell工具cut/sed/awk/sort

sed && awk工具 及一些常用的shell脚本

7Shell工具 cut sed awk sort

[Linux Shell学习系列十四]sed和awk-5.awk基础

shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

Shell文本处理工具(Linux三剑客 grep sed awk )