sed指令
基本参数
替换:s/old/new/
删除:d
插入:i
追加:a
打印匹配行:p
修改文件:-i
行号操作:N
sed -i ‘1d’ 1.txt 删除1.txt文件第一行内容
sed -i ‘4,7d’ 1.txt 删除1.txt文件的第4-7行内容
sed -r ‘2,$d’ 1.txt 删除1.txt文件中从第2行-最后的所有内容
sed -ri ‘1~2d’ /etc/passwd //删除所有奇数行 odd-numbered
sed -r ‘0~2d’ /etc/passwd //删除所有偶数行 even-numbered
r参数不会修改内容,i 直接修改内容
删除配置文件中的空行
sed -r ‘/1*$/d’ 1.txt
删除注释行及空行:
sed -i ‘/^#/d’ 1.txt 删除注释行
sed -i ‘/^$/d’ 1.txt 删除空行
sed -i ‘s/^#//’ filename 删除行首的#
sed -i ‘2,6s/^/#/’ 1.txt
{意为在1.txt文件中给第二行和第六行前添加#}
sed -i ‘s/^/#/’ 1.txt
{意为给全文行首添加#}
sed -i ‘4a\nihao’ 1.txt
a插入 数字:在第几行后
意为在1.txt文件的第四行后面添加nihao
1.搜索每一行匹配到MA的将第一个替换为Massachusetts:
[root@localhost ~]# sed -i ‘s/MA/Massachusetts/’ test.txt
s:----查找
2.搜索每一行,找到所有的MA字符,进行全局替换为Massachusetts
[root@localhost ~]# sed -i ‘s/MA/Massachusetts/g’ test.txt
3.搜索每一行,找到所有的MA字符,进行全局替换为Massachusetts同时忽略大小写
[root@localhost ~]# sed -i ‘s/MA/Massachusetts/gi’ test.txt
追加命令:a
sed -i ‘2a\1111111111111’ /etc/hosts
该命令会将 1111111111111 追加到 /etc/hosts 文件的第 2 行后面,原第 2 行的内容不会被修改
sed -i ‘2i\1111111111111’ /etc/hosts
该命令会在 /etc/hosts 文件的第二行之前插入一行,内容为 1111111111111
原本的第二行会变成第三行
修改命令:c
sed -i ‘2c\1111111111111’ /etc/hosts
该命令会将 /etc/hosts 文件中的第二行替换为 1111111111111,不保留原第二行内容
由于在使用 -i 参数时比较危险, 所以我们在使用i参数时在后面加上.bak就会产生一个备份的文件,以防后悔
[root@localhost ~]# sed -r -i.bak ‘s/root/ROOT/’ passwd
awk
切ip地址 ip a | grep glo | awk ‘{print $2}’ | awk -F"/" ‘{print $1}’、
抓出来本机使用的swap 分区大小
free -h | awk NR==3’{print $3}’
cat /etc/passwd | awk -F":" ‘{print $1}’
\t ↩︎