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 把空白行或者#号开头的去掉。
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 工具的主要内容,如果未能解决你的问题,请参考以下文章
[Linux Shell学习系列十四]sed和awk-5.awk基础