linux中sed工具的使用

sed

sed 本身也是一个管线命令,而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。

$ sed [-nefr] [动作]
选项与参数:
-n  :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。
      但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。
-e  :直接在命令行界面上进行 sed 的动作编辑;
-f  :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作;
-r  :sed 的动作支持的是延伸型正则表达式的语法。(默认是基础正则表达式语法)
-i  :直接修改读取的文件内容,而不是由屏幕输出。

动作说明:  [n1[,n2]]function
n1, n2 :不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作
         是需要在 10 到 20 行之间进行的,则“ 10,20[动作行为] ”

function 有下面这些咚咚:
a   :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c   :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d   :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i   :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p   :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s   :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!
      例如 1,20s/old/new/g 就是啦!
1.删除
$ nl 1.txt
     1    helloworld
     2    haa
     3    12345678
     4    !@#$%^&*(
     5    ASDwexvRSD
     6    ,./]];]{}_()^%
     7    asdasdasd
       
$ nl 1.txt| sed '2,5d'
     1    helloworld
     6    ,./]];]{}_()^%
     7    asdasdasd

2.插入

$ nl 1.txt|sed '1a weather is hot!'
     1    helloworld
weather is hot!
     2    haa
     3    12345678
     4    !@#$%^&*(
     5    ASDwexvRSD
     6    ,./]];]{}_()^%
     7    asdasdasd

3.查看第4~5行的数据

$ nl 1.txt|head -n 5|tail -n 2
     4    !@#$%^&*(
     5    ASDwexvRSD

使用sed更加简单方便

$ nl 1.txt|sed -n '4,5p'
     4    !@#$%^&*(
     5    ASDwexvRSD

4.获取ip地址

(1)使用ifconfig获取网卡信息。

(2)通过inet过滤ip信息

$ ifconfig|grep 'inet '
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
        inet 127.0.0.1  netmask 255.0.0.0

(3)替换前面的inet

$ ifconfig|grep 'inet '|sed 's/^.*inet//g'
 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
 127.0.0.1  netmask 255.0.0.0

(4)将netmask到最后都替换掉

$ ifconfig|grep 'inet '|sed 's/^.*inet//g'|sed 's/ *netmask.*$//g'
 10.0.2.15
 192.168.56.101
 127.0.0.1
摘抄自:https://www.cnblogs.com/lzeffort/p/7237268.html

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96501

(0)
小孜然小孜然
上一篇 2018-04-18 10:36
下一篇 2018-04-18 13:51

相关推荐

  • 软件包管理 2 —–基本知识 rpm yum

    rpm库文件查看二进制程序所依赖的库文件ldd /PATH/TO/BINARY_FILE管理及查看本机装载的库文件ldconfig 加载库文件/sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf缓存文件:/etc/ld.so.cac…

    Linux笔记 2018-04-22
  • nginx实现请求转发

    反向代理适用于很多场合,负载均衡是最普遍的用法。 nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。 nginx 反向代理官方文档: NGINX REVERSE PROXY 当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所…

    Linux笔记 2018-07-08
  • 第四个礼拜作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。         cp -r /etc/skel /home/tuser1 ;         ll -d /home/tuser1;         chmod -R g-rwx,o-rwx /home/tuser1;   …

    Linux笔记 2018-06-03
  • 作业管理(任务计划)

    任务计划就好比我们的闹钟一样,到了指定的时间就该去做对应的事情。 任务计划分为两类: 一次性的任务计划:只执行一次就结束 周期性的任务计划:每隔一定的周期去做相同的事情 at命令就是专门用来处理一次性的计划任务 batch也是处理一次性的计划任务但是它是由系统自行选择空闲时间去执行此处指定的任务(不常用) crontab可以根据定义的周期信息,循环的去做一些…

    Linux笔记 2018-05-05