[root@lanny test]# cat test.txt
test
liyao
lanny

经典博文:

http://oldboy.blog.51cto.com/2561410/949365

http://blog.csdn.net/hello_hwc/article/details/39528879

http://blog.csdn.net/hello_hwc/article/details/39528879


SSH优化:在某一行后追加内容

sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' sshd_config

在13行后追加这些内容


############################################

-n, --quiet, --silent  ----suppress automatic printing of pattern space

-i   [SUFFIX], --in-place[=SUFFIX]

-r 正则

p Print the current pattern space.

注:

pattern有鞋样子的意思.  正则表达式就是个鞋样子.

in place of 代替

in place 在对的位置; 适当的;

############################################

1,取行

[root@lanny test]# sed -n '3p' test.txt
jeffery
[root@lanny test]# sed -n '2,3p' test.txt
liyao
jeffery

2,过滤

[root@lanny test]# sed -n '/liyao/p' test.txt
liyao
删除第三行:
sed -n '/3/d' test.txt

3,拼凑

知识点:sed后向引用:(全屏蔽取出思想)

[root@lanny ~]# echo "oldboy oldgirl"|sed -r 's#(.*) (.*)#\1 \2#g'
oldboy oldgirl

注解:

()的作用: 's#(.*) (.*) 正则的书写,显然我们后面的()都不希望被转义
--r的作用:sed -r ,加入后面要匹配的空格符号不希望被转义,那么就加-r选项了.
 sed -r 's#(.*)#chkconfig \1 off#g'
-r 不转义 后面的括号等为原来意义
(.*) 过滤出输出的内容 括起来 后面可以通过 \1取出来

[root@lanny test]# sed -r 's#(.*)#chkconfig \1 off#g' test.txt
chkconfig test off
chkconfig liyao off
chkconfig jeffery off

拼凑特例:=========================可能不好理解 grep ^ file.txt 发现什么也没匹配,

思想:什么都没屏蔽

但是这样报错呀:

[root@lanny l]# sed -r 's##a b #g' name.txt
sed: -e expression #1, char 0: no previous regular expression

======================================必须得加个东西了,那就加^吧.哈哈,也算是理解了.

[root@lanny l]# sed -r 's#^##g' name.txt
liyao
oldboy
test
[root@lanny l]# sed -r 's#^#a b #g' name.txt
a b liyao
a b oldboy
a b test

sed什么参数都不加,凭凑在最后了

思想:匹配到,替换掉.

情况一:用^匹配:
[root@lanny data]# sed 's#^#chkconfig on #g' name.txt 
chkconfig on oldlanny
chkconfig on jack
chkconfig on jeffery
chkconfig on liming

情况二:用$匹配:chkconfig没加上,只匹配到最后一部分.

[root@lanny ~]# sed -r 's#$#chkconfig on #g' aa
maxiaolangchkconfig on
lannychkconfig on
lannyma.blog.51cto.comchkconfig on

awk也可以拼凑:

awk '{print $1}'

进阶:
awk '{print "chkconfig " $1 " on"}'

sed结合正则表达式过滤ip地址:

[root@lanny ~]# ifconfig eth0|sed -n '2p'
inet addr:192.168.14.134 Bcast:192.168.14.255 Mask:255.255.255.0
[root@lanny ~]#
[root@lanny ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*addr:##g'
192.168.14.134 Bcast:192.168.14.255 Mask:255.255.255.0
[root@lanny ~]#
[root@lanny ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*addr:##g'|sed -r 's# B.*$##g'
192.168.14.134

前2个##匹配到的过滤掉(删掉)输出.

sed -r 's#^.*addr:##g'

4,替换

[root@lanny test]# sed -i 's#lanny#jeffery#g' test.txt
[root@lanny test]# cat test.txt
test
liyao
jeffery

[sh]sed 4个功能的更多相关文章

  1. sed 4个功能

    [root@lanny test]# cat test.txt test liyao lanny 经典博文: http://oldboy.blog.51cto.com/2561410/949365 h ...

  2. sed 常用的功能

    1.每行后面加入一个空行 sed 'G' num.txt,保留空间(Hold Space)的内容默认值是一个空行.2.每行前面加入一个空行 sed '{x;p;x}' num.txt,交换模式空间和保 ...

  3. awk sed 总结

    Awk总结笔记 介绍 90年代 new awk :nawk Linux 的是gawk 我们简化awk 用法 #  awk [options ] ‘scripts’ file1 file2 .... # ...

  4. linux grep,sed,awk和diff的使用

    1:grep//显示行 # grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来 # grep -v 'main' /home/myhome/a.c //显示除 ...

  5. sed总结

    [-] 简介 调用方式 选项 命令集合 寻址方式 基本用法 文件操作 附加-插入-修改文本 删除文本 替换文本 转换文本 补充 ------------------------------------ ...

  6. build/envsetup.sh中hmm、get_abs_build_var、get_build_var解析

    function hmm() { # 打印帮助信息 cat <<EOF Invoke ". build/envsetup.sh" from your shell to ...

  7. shell编程之sed

    一.sed (Stream Editor) 1.定位行:sed -n '12,~3p' pass #从第12行开始,直到下一个3的倍数行(12-15行)sed -n '12,+4p' pass #从第 ...

  8. sed武功心法(info sed翻译+注解)

    本文中的提到GNU扩展时,表示该功能是GNU为sed提供的(即GNU版本的sed才有该功能),一般此时都会说明:如果要写具有可移植性的脚本,应尽量避免在脚本中使用该选项. 本文中的正则表达式几乎和gr ...

  9. sed修炼系列(一):花拳绣腿之入门篇

    本文为花拳绣腿招式入门篇,主要目的是入门,为看懂sed修炼系列(二):武功心法做准备.虽然是入门篇,只介绍了基本工作机制以及一些选项和命令,但其中仍然包括了很多sed的工作机制细节.对比网上各sed相 ...

随机推荐

  1. C#中相关结构的用法及用途

    C#中Dictionary的用法及用途 http://www.cnblogs.com/linzheng/archive/2010/12/13/1904709.html C#中的Dictionary字典 ...

  2. Oracle Data Guard 重要配置参数

    Oracle Data Guard主要是通过为生产数据库提供一个或多个备用数据库(是产生数据库的一个副本),以保证在主库不可用或异常时数据不丢失并通过备用数据库继续提供服务.对于Oracle DG的配 ...

  3. Strange Addition

    http://codeforces.com/problemset/problem/305/A 这题就是意思没看懂,一开始以为只要个位数只要一个为0就能相加,没想到到CF里面提交第三组就过不了,才发现是 ...

  4. linux常见题目

    1. 把一个文件里面所有包含 abc 的行里面的 abc 替换成 def,然后输出第一列和第三列 cat abc.txt | grep abc | sed 's/abc/def/g' | awk '{ ...

  5. 服务名无效。请键入 NET HELPMSG 2185 以获得更多的帮助。

    1:关闭MySQL服务的时候出现“服务名无效.请键入 NET HELPMSG 2185 以获得更多的帮助.”错误. 2:查看服务名称 3:重新关闭服务 4:管理员运行控制台后重新执行 成功停掉了.

  6. ios8.1.3Cydia重装

    1.下载deb包 2.把包放到/var/mobile/Media/下 3.终端输入:dpkg -i /var/mobile/Media/*.deb 然后输入:su -c uicache mobile ...

  7. glusterFS的部署流程

    转自:http://www.cnblogs.com/terrycy/p/5915263.html GlusterFS简单配置   1.准备工作 准备三台机器(物理机或者虚拟机均可)用于安装和测试Glu ...

  8. vsftp限制FTP用户只能访问自己的目录

    修改配置文件/etc/vsftpd/vsftpd.conf chroot_local_user=YESallow_writeable_chroot=YESchroot_list_enable=YESc ...

  9. oracle10-11数据库下载

    Oracle数据库官方下载,需要注册oracle账号,方可下载! 11G 7个压缩包含义: p102025301120——Linux-x86-64_1of7.zip             datab ...

  10. highstock使用案例(异步请求,懒加载)

    jsp中导入:<script src="<c:url value="/resources/js/highstock.js"></c:url> ...