[root@b ~]# cat f.txt
inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0
[root@b ~]# cat f.txt | sed -nr 's/^.*inet addr:(.*) Bcast:.*$/ip:\1/gp'
ip:192.168.0.110
[root@b ~]# cat f.txt | sed -nr 's/^.*inet addr:(.*) Bcast:(.*) Mask:.*$/ip:\1\nBcast:\2/gp'
ip:192.168.0.110
Bcast:192.168.0.255

后向引用

[root@b ~]# cat m.txt

123qwe456

[root@b ~]# cat m.txt |sed -r 's/([0-9]{3})([a-z]{3})([0-9]{3})/\3\2\1/g'|tr 'a-z' 'A-Z'
456QWE123

z注释:s/([0-9]{3})([a-z]{3})([0-9]{3})/\3\2\1/g,表示匹配的123 qwe 456

tr 'a-z' 'A-Z'表示将小写字母a-z替换为大写字母A-Z

[root@b ~]# cat m.txt |sed -r 's/([0-9]{3})([a-z]{3})([0-9]{3})/\3\U\2\1/g'
456QWE123

注释:\U表示将其后面的所有小写内容替换为大写字母

[root@b ~]# cat m.txt |sed -r 's/([0-9]{3})([a-z]{3})([0-9]{3})/\3\U\2\1/g'|sed -r 's/(.*)([A-Z]{3})(.*)/\3\L\2\1/g'
123qwe456

注释:\L表示将其后面的所有大写内容替换为小写字母

[root@b ~]# echo $RANDOM | md5sum |tr '0-9' 'a-z' |cut -c 1-8
fcdfcdfh

注释:输出一个系统随机数,计算md5的hash值,然后替换所有数字为小写字母,通过cut命令提取前8位数字

[root@b ~]# for i in `seq 1000`;do echo $RANDOM |md5sum|tr '0-9' 'a-z' | cut -c 1-10 >>l.txt;done

注释:使用for循环1000次,执行random系统随机数,并将结果输出到l.txt文件中

[root@b ~]# cat l.txt |sort |uniq -c | sort -nr |awk '$1>1{print $0}'|wc -l

注释:查看l.txt文件,通过sort排序和uniq去重操作后,使用awk命令将重复次数大于1的行打印出来,通过wc -l进行行数统计

[root@b ~]# echo '123456789' | sed -r 's/./&\n/g'|sed '$d'
1
2
3
4
5
6
7
8
9

注释:输出123456789到管道,通过sed命令过滤,s/./&\n/g表示将任意一个字符替换为在其后面加\n换行符,再通过sed ‘$d’ 命令去除最后一行空行

[root@b ~]# cat b.txt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/cl_b-root xfs 36G 12G 25G 32% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 8.7M 2.0G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 122M 176M 41% /boot
/dev/mapper/cl_b-home xfs 2.0G 33M 2.0G 2% /home
/dev/mapper/cl_b-var xfs 4.3G 389M 4.0G 9% /var
tmpfs tmpfs 410M 0 410M 0% /run/user/0
[root@b ~]# cat b.txt |sed '/tmpfs/!d'
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 8.7M 2.0G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
tmpfs tmpfs 410M 0 410M 0% /run/user/0

注释:sed '/tmpfs/!d'表示匹配tmpfs的行保留,其余内容全部删除。!表示取反的意思

[root@b ~]# cat -E m.txt
123qwe456$
      $
$
$
$
          $

[root@b ~]# cat m.txt | sed -r '/^$/d'    #只删除了空行,无法删除空格行
123qwe456

[root@b ~]# cat m.txt | sed -r '/^$|[ \t]+/d'  #同时删除空行和空格行
123qwe456
[root@b ~]#

[root@b ~]# cat -n a.txt
1 flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
2 inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
3 inet6 fe80::ad90:d426:9937:f9cd prefixlen 64 scopeid 0x20<link>
4 ether 00:0c:29:60:68:5a txqueuelen 1000 (Ethernet)
5 RX packets 1948 bytes 207628 (202.7 KiB)
6 RX errors 0 dropped 0 overruns 0 frame 0
7 TX packets 1203 bytes 194327 (189.7 KiB)
8 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
9

[root@b ~]# cat -n a.txt | sed '5,7s/RX/riririri/g'
1 flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
2 inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
3 inet6 fe80::ad90:d426:9937:f9cd prefixlen 64 scopeid 0x20<link>
4 ether 00:0c:29:60:68:5a txqueuelen 1000 (Ethernet)
5 riririri packets 1948 bytes 207628 (202.7 KiB)
6 riririri errors 0 dropped 0 overruns 0 frame 0
7 TX packets 1203 bytes 194327 (189.7 KiB)
8 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
9

注释:sed '5,7s/RX/riririri/g'表示将5-7行的所有RX替换为riririri字符串。

[root@b ~]# cat -n a.txt | sed -n '1,3p'    #打印1-3行,共三行
1 flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
2 inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
3 inet6 fe80::ad90:d426:9937:f9cd prefixlen 64 scopeid 0x20<link>

[root@b ~]# cat -n a.txt | sed -n '1p;3p'   #打印1行和3行,共两行 
1 flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
3 inet6 fe80::ad90:d426:9937:f9cd prefixlen 64 scopeid 0x20<link>

[root@b ~]# cat -n a.txt | sed -n '1,+3p'   #打印1行和其后的3行,共四行
1 flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
2 inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
3 inet6 fe80::ad90:d426:9937:f9cd prefixlen 64 scopeid 0x20<link>
4 ether 00:0c:29:60:68:5a txqueuelen 1000 (Ethernet)

sed的多条件过滤语句写法

[root@b ~]# cat f.txt
inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0
[root@b ~]# cat f.txt |sed -e 's/inet/forward/' -e 's/addr/home/'
forward home:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

[root@b ~]# cat f.txt |sed 's/inet/forward/;s/addr/home/'
forward home:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

[root@b ~]# cat f.txt |sed -e '{
s/inet/forward/
s/addr/home/
}'
forward home:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

[root@b ~]# cat f.txt
inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

[root@b ~]# cat s.txt
s/inet/forward/
s/addr/home/
[root@b ~]# sed -f s.txt f.txt
forward home:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

[root@b ~]# sed -r -f s.txt f.txt
forward home:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0

注释:sed 的-f参数,表示过滤的条件都来自于s.txt文件

删除c语言的所有注释

删除含有//的注释行

删除/*……*/的注释行

删除/*  至*/之间的所有内容

sed扩展命令使用的更多相关文章

  1. C#编程模式之扩展命令

    C#编程模式之扩展命令 前言 根据上一篇的命令模式和在工作中遇到的一些实际情况,有了本篇文章,时时都是学习的一个过程,会在这个过程中发现许多好的模式或者是一种开发方式,今天写出来的就是我工作中常用到的 ...

  2. WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  3. WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...

  4. linux:sed高级命令之n、N(转)

    sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...

  5. sed替换命令

    sed替换命令 语法为: sed ' [ address-range | pattern-range ] s/original-string/replacement-string/[substitut ...

  6. sed附加命令

    追加命令(命令a) sed '[address] a the-line-to-append' input-file 在第二行后面追加一行(原文这里可能有问题,没有写名行号) [root@sishen ...

  7. sed 常用命令 网址

    https://wangchujiang.com/linux-command/c/sed.html https://linux.cn/article-11367-1.html https://juej ...

  8. sed 替换命令使用

    输入文件不会被修改,sed 只在模式空间中执行替换命令,然后输出模式空间的内容.文本文件 employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manage ...

  9. 【转】sed单行命令大全

    文本间隔:  # 在每一行后面增加一空行  sed G # 将原来的所有空行删除并在每一行后面增加一空行.  # 这样在输出的文本中每一行后面将有且只有一空行.  sed '/^$/d;G' # 在每 ...

随机推荐

  1. 01Spring基于xml的IOC配置--入门

    01Spring基于xml的IOC配置 1.创建一个普通的maven工程 1.1 选择maven,不用骨架,点击下一步. 1.2 填写GroupId.ArtifactId.Version.填完点击下一 ...

  2. having函数,case when与order by

    having:用于筛选分组后的各组数据.聚合函数,和group by一起使用(where不能和聚合函数使用)group by放在order by前使用,放在之后报错SELECT user_id fro ...

  3. killall - 以名字方式来杀死进程

    SYNOPSIS (总览) killall [-egiqvw] [-signal] name ... killall -l killall -V DESCRIPTION (描述) killall 发送 ...

  4. error: (-215) !empty() in function detectMultiScale

    tips: pip install opencv-python or https://www.lfd.uci.edu/~gohlke/pythonlibs/ 原因确实是找不到 opencv 的 xml ...

  5. 这才是最完美SSD:性能满血发挥 万里挑一

    固态硬盘同质化日益严重,不同品牌的固态盘想要一决高下就只有靠品牌口碑与做工硬实力了. 最近影驰对他们的ONE系列固态硬盘产品进行了一波更新,推出了多种容量的ONE PCIe M.2 SSD,今天我们就 ...

  6. SIP协议 会话发起协议(二)

    SIP - 响应码 SIP响应是由用户代理服务器(UAS)或SIP服务器生成的用于回复客户端生成的请求的消息.这可能是一个正式的确认,以防止UAC转发请求. 响应可能包含UAC所需的一些额外的信息头字 ...

  7. 008-saltstack之salt-ssh

    根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...

  8. 移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件

    Telerik UI for Xamarin是一个构建跨平台移动应用程序的原生UI.Telerik UI for Xamarin使用Xamarin.Forms技术,它可以让开发人员从一个单一的共享C# ...

  9. 集合操作符 Union / Union All / Intersect / Minus

    集合操作符 Union / UnionAll / Intersect / Minus -- 生成测试数据 create table dept_01 as select * from dept wher ...

  10. vue打包多页报错webpackJsonp is not defined

    找到build→webpack.prod.conf.js→找到HtmlWebpackPlugin插件,添加如下配置即可 chunks: ['manifest', 'vendor', 'app']