博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed
阅读量:6536 次
发布时间:2019-06-24

本文共 1875 字,大约阅读时间需要 6 分钟。

需要 \

sed -n -r (不用脱义符号) -i (真实操作,不要用)
不打印; sed不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑),p命令可以用来打印编辑行
sed '....'d 1.txt 单引号后加d 删除 不实际删除只更改显示
替换
sed '1,10s/nologin/login/g' 1.txt
1到10行nilogin 改成login 全局
{}大括号多个sed命令;分隔开
& 是加的意思
打印指定行 sed '10'p -n 1.txt; sed '1,4'p -n 1.txt; sed '5,$'p -n 1.txt
打印包含某个字符串的行 sed -n '/root/'p 1.txt 可以使用 ^ . $等特殊符号
-e 可以实现同时进行多个任务 sed -e '/root/p' -e '/body/p' -n 1.txt 也可以用;实现 sed '/root/p; /body/p' -n 1.txt
删除行 sed '/root/d' 1.txt; sed '1d' 1.txt; sed '1,10d' 1.txt
替换 sed '1,2s/ot/to/g' 1.txt, 其中s就是替换的意思,g为全局替换,否则只替换第一次的,/也可以为 #, @ 等
删除所有数字 sed 's/[0-9]//g' 1.txt
删除所有非数字 sed 's/[^0-9]//g' 1.txt
调换两个字符串位置 head -n2 1.txt |sed 's/(root)(.
)(bash)/\3\2\1/'
直接修改文件内容 sed -i 's/ot/to/g' 1.txt
a 行后插入 i 行前插入
c 替换 d 删除 n跳过一行
sed '1.5a =====' file
sed '10c b' file
对第十行的c替换成b
在test.txt 20行到末行最前面加 'aaa:'
sed '20,$s/.*/aaa:&/' 1.txt
\u\l 对首字母大小写替换
\U\L对字符串大小写替换
\u& 小写变大写
\l& 大写变小写

sed 高级用法

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下。
  保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的“sed command(sed命令)”就一条接着一条进行处理,直到脚本执行完毕。然后该行被输出,模式被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。
  模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解两者的关系。
  sed的指令中用来操作保持空间和模式空间的常见的有一下
  为了方便,在下面用P来表示模式空间,M来表示保持空间
  h:把模式空间里的内容复制到暂存缓冲区(保持空间)
  H:把模式空间里的内容追加到暂存缓冲区(保持空间)
  g:把暂存缓冲区里的内容复制到模式空间,覆盖原有的内容
  G:把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
  d: 删除pattern中的所有?行,并读入下一新行到P中
  D:D 删除M ,P中的第一行,不读入下一行

  x:交换保持空间和模式空间的内容

在多行模式下有三个新命令:”N”,”D”和”P”。我将介绍它们与”n”,”d”和”p”单行命令的关系。
“n”命令会打印当前模式空间(除非使用了-n选项),清空当前模式空间,从输入中读取下一行。”N”命令不打印不当模式空间,也不清空模式当间,它读取下一行,并将新行的字符追加到模式空间。
“d”命令会删除当前模式空间,并读取下一行,再将新行放入模式空间,并放弃当前操作,然后开始sed的第一个命令,即开始一次新的循环。”D”命令删除模式空间中的第一部分,直到新行的字符,而保留模式空间其余的部分。它像”d”一样,放弃当前操作并开始一个新的循环,但是它不会打印当前模式空间,你在前一步打印它,如果”D”命令在一个大括号里与其它命令一起执行,在”D”之后的命令会被忽略,然后另一组sed命令会被执行,除非模式空间已经空了。如果真是这样,那么循环会重新开始。
“p”命令会打印整个模式空间,”P”命令只打印模式空间的第一部分,直接新行的字符。

转载于:https://blog.51cto.com/amazing61/2063840

你可能感兴趣的文章
使用makecontext实现用户线程【转】
查看>>
Comet:基于 HTTP 长连接的“服务器推”技术
查看>>
BZOJ 2733: [HNOI2012]永无乡 启发式合并treap
查看>>
四种方法校验数组中是否包含某个指定的字符串
查看>>
29、Java并发性和多线程-非阻塞算法
查看>>
安装OpenResty开发环境
查看>>
第0课 从0开始
查看>>
hadoop无法启动DataNode问题
查看>>
java泛型中<?>和<T>区别
查看>>
这里是指推送通知跟NSNotification有区别:
查看>>
Linux中断(interrupt)子系统之一:中断系统基本原理【转】
查看>>
用户ID的代码生成
查看>>
win7经常出现“关闭xxxx前您必须关闭所有会话框”
查看>>
SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)
查看>>
react-native 常见操作 及 git 补充
查看>>
MongoDB 自己定义函数
查看>>
Summary Day30
查看>>
逆向输出回环数组
查看>>
自己动手,实现“你的名字”滤镜
查看>>
高清摄像头MIPI CSI2接口浅解【转】
查看>>