妙解Sed和Awk的秘密-2
作者:互联网
第3章 巧妙破解sed
-
3-1主要内容和原理介绍
-
sed--行处理
-
-
3-2 sed应用的基本格式介绍
-
使用sed的格式
-
一、命令行模式 $sed [options] 'command' file(s)
-
options:-n ,-e
-
-
二、脚本模式 $sed -f scriptfile file(s)
-
-
-
3-3 sed基本操作命令-p命令
-
一、基本操作命令
-
1.p (打印相关的行)
-
2.定位一行:nl passwd | sed -n '1p'
-
3.定位几行:例:nl passwd | sed -n '10!p' nl passwd | sed -n '10,20p'
-
4.定位间隔几行:例:(从第一行开始,间隔2行)nl passwd |sed -n '1~2p'
-
-
-
3-4 sed基本操作命令-行处理命令
-
一、基本操作命令
-
1.-a(新增行)/i(插入行)/-c(替代行)/-d(删除行)
-
例1:nl passwd | sed '1,5a==============' (在1-5行后新增)
-
例2:nl passwd | sed '1,5i===========' (在1-5行前新增)
-
例3:nl passwd | sed '3,10chahahahahahaha' (整体替换)
-
例4:nl passwd | sed '/syslog/d'
-
-
2.案例一:优化服务器配置:在配置文件中加入相应文本
-
sed '$a \ Hello\n I am Lisa' passwd
-
-
3.案例二:删除文本空行: sed '/^$/d' passwd
-
4.案例三:服务器日志处理:sed -n '/Error/p' fresh.log
-
-
-
3-5 sed基本操作命令-s替换命令
-
-s(替换):分隔符/,#等 例: sed 's/false/true/' passwd
-
-g(全局):替换标志 例:sed 's/:/%/g' passwd
-
案例一:数据筛选,获取网卡中的IP :ifconfig | sed -n '2p' | sed 's/inet.*r://' | sed 's/B.*$//'
-
-
3-6 sed高级操作命令{}n
-
1.{}:多个sed命令,用;分开
-
例:nl passwd | sed '{10,20d;s/false/true/}'
-
-
2.-n: 读取下一个输入行(用下一个命令处理)====跳行
-
例:输出偶数行:nl passwd | sed -n '{n;p}'======nl passwd | sed -n '2~2p'
-
输出奇数行:nl passwd | sed -n '{p;n}'======nl passwd | sed -n '1~2p'
-
nl passwd | sed -n '{n;n;p}'
-
-
-
3-7 sed高级命令-&符号使用及案例
-
1.-&替换固定字符串
-
sed 's/^[a-z_-]\+/& /' passwd
-
-
2.案例一:大小写的转换:将用户名的首字母转S换为大写/小写
-
(元字符\u\l\U\L:转换为大写/小写字符)
-
sed 's/^[a-z_-]\+/\u&/' passwd
-
将文件夹下的.txt文件名转换为大写:ls | sed 's/^\w\+/\U&/'
-
-
-
3-8 sed高级操作命令-()符号案例
-
1.案例三:数据筛选:获取passwd中USER,UID和GID
-
例:获取第一个字段:sed 's/\(^[a-z_-]\+\):.*$/\1/' passwd
-
例:获取前两个字段:sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):.*$/\1 \2/' passwd
-
例:获取前三个字段:sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/\1 \2 \3/' passwd
-
例:获取前三个字段并添加名称:sed 's/\(^[a-z_-]\+\):x:\([0-9]\+\):\([0-9]\+\):.*$/USER:\1 UID:\2 GID:\3/' passwd
-
-
-
3-9 sed高级操作命令-()符号使用
-
1.-\(\):替换某种(部分)字符串(\1,\2)
-
例:sed 's/w1\(w2\)w3/\1/'
-
-
2.案例二:数据筛选:获取网卡的IP
-
ifconfig | sed -n '/inet addr:172/p' | sed 's/inet.*r:\([0-9.]\+\) .*$/\1/'
-
-
-
3-10 sed高级操作命令-rw命令使用
-
1. -r:复制指定文件插入到匹配行
-
-w:复制匹配行拷贝到指定文件里
-
源文件:互操作:目标文件
-
例:sed '1r 123.txt' abc.txt(读取123.txt整个文件,放到abc.txt第一行后面)(读没有改变两个文件的内容)
-
sed '1w abc.txt' 123.txt(把123.txt中的第一行写到abc.txt文件中)(abc.txt原来的内容没有了)
-
-
3-11 sed高级操作命令-q命令使用
-
1.q:退出sed
-
例1:nl passwd | sed '10q'(读完第10行就退出)
-
例2:nl passwd | sed '/false/q'(读到false就退出)
-
-
3-12 sed学习总结
-
sed:
-
1.行处理方式
-
2.patten:正则行定位
-
3.命令:
-
A.一般命令:1.p 2.a/i 3.c 4.d 5.s
-
B.高级命令:1.& 2./(.../) 3.r/w 4.q
-
-
-
标签:nl,passwd,妙解,命令,_-,Sed,Awk,sed,txt 来源: https://blog.csdn.net/weixin_39918388/article/details/111191538