• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > sed初学者实用说明

sed初学者实用说明

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了linux sed命令,linux sed i,linux sed命令详解,linux sed用法,linux sed替换 等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

例如,在多个系统、应用程序安装之后,我们往往需要对很多配置文件进行修改,用vi编辑器意味着耗费时间、重复劳动,而sed就可将我们从繁重的重复劳动中解放出来。

sed的调用方式:

1、sed [sed选项] 'sed命令' 要修改的文件
2、sed [sed选项] -f sed脚本 要修改的文件
3、sed脚本 [sed选项] 要修改的文件

这里仅介绍最常用的第一种方式

sed选项:仅列常用的

-i:直接修改源文件(不用这个选项的话无法直接修改,必须重定向到新文件,如果仅作为输出测试则不需此选项),还可将源文件修改前备份
sed -i.bak 's/123/234/' test.txt 将test.txt备份为test.txt.bak,然后将文件内行第一个出现的“123”替换为“234”
-e:多次编辑,例如先将所有的123替换为234,再将第7行前加#号注释
sed -i -e 's/123/234/g' -i -e '7 s/^/#/' test.txt
-f:指定sed脚本文件名
-n:取消默认的输出(不打印),用sed不加任何选项的话你会看到所有内容输出,并不是按照sed命令所限制的条件输出,那么配合“p”命令经可以过滤掉不符合条件的行,并显示出符合条件的行,例如
sed -n '查找所有包含字符123的行'p test.txt 或 sed -n '查找所有包含字符123的行p' test.txt

sed命令:这里可以使用正则表达式,如遇特殊字符,需用“\”来屏蔽其特殊含义,例如“\$”表示普通的字符$

x x为某行行号
x,y 例如2,5,从第2行到第5行
/val/ 查询包含“val”字符的行
/val1/val2/ 查询包含两个模式的行
val/,x 在给定行号的行上查询包含“val”的行
x,/val/ 通过行号和模式查询匹配的行
x,y! 不包含指定行号x,y的行

p 打印匹配的行
= 显示行号
a\ 在定位了的行之后附加内容
i\ 在定位了的行之后插入内容
d 删除定位的行,例如:2d 代表删除第2行
c\ 用新文本替换定位行的文本
s 替换,形式为:'s/查找的内容/替换的内容/'
g 进行全局替换,如不使用此选项将只对该行匹配到的第一个结果进行替换,该行下一个匹配的就不处理了。
...其他就不介绍了,百度搜下吧

实例学习:
test.txt文件内容为
The honeysuckle band played all night long for only $90
It was an evening of splendid music and company
Too bad the disco floor fell through at 23:10
The local nurse Miss P.Neave was in attendance

1、显示第2行的内容
sed -n '2p' test.txt

2、显示第1到3行的内容
sed -n '1,3'p test.txt

3、仅显示包含“disco”的行
sed -n '/disco/'p test.txt

4、显示包含“$”字符的行
sed -n '/\$/'p test.txt

5、显示以数字结尾的行,[0-9]是正则表达式 代表数字0到9;“$”表示行尾(“^”表示行首)
sed -n '/[0-9]$/'p test.txt
显示结果为:
The honeysuckle band played all night long for only $90
Too bad the disco floor fell through at 23:10

6、显示以数字结尾的行并显示以大写T为开头的行
sed -n -e '/^T/'p -e '/[0-9]$/'p test.txt

7、匹配任意字母、后跟任意字母的多次重复,并以“ing”结尾的行
sed -n '/.*ing/'p test.txt

8、第一行与最后一行
sed -n '1p' test.txt
sed -n '$p' test.txt

9、将“nurse”改为“little nurse”,“&”命令用来重新调用被替换的内容
sed -n 's/nurse/little &/p' test.txt

10、先将所有的123替换为234,再将第7行前加#号注释
sed -i -e 's/123/234/g' -i -e '7 s/^/#/' test.txt

11、将“--------”删除,将空行删除,将第一行和最后一行删除,并打印第一列
文件内容:
Database Size(MB) Date Created
------------------------------------------
mysql 2244 12/11/08
test 5632 12/11/08

(2 rows affected)
命令:
cat test.txt | sed 's/--*//g' | sed '/^$/d' | sed '$d' | sed '1d' | awk '{print $1}'
显示结果:
mysql
test
说明:
使用s/--*//g删除横线-------
使用/^$/d删除空行
使用$d删除最后一行
使用1d删除第一行
awk {print $1}打印第一列

12、一些杂项例子
^[0-9]表示行第一个字符为任意数字,例如“1asdf”;
^[0-9]*表示行首包含任意个数的数字,例如“1818asdf”
[0-9][0-9]*$表示行尾包含至少2个数字,例如“asdfasdf18”“asdf1818”
sed -i 's/^[0-9]*//g' test.txt 删除行首的任意数字
sed -i -e 's/^[0-9]*//g' -i -e 's/$/& passed/' test.txt 删除行首任意数字,并在每行结尾加上“ passed”
sed -i -e 's/^/#&' test.txt 给每行行首加上“#”注释
s/\.$//g 删除以句点结尾的行的句点
s/^[ ][ ]*// 删除行首的任意个空格
s/^.// 删除行首的第一个字符
s/^\/// 删除行首的“/”字符
s/SP\(..\)//g 删除字符“SP”以及紧跟其后的两个任意字符,“SPLLY”-->“Y”

</div>

您可能想查找下面的文章:

  • linux sed命令详解(推荐)
  • 查看某时间段到现在的系统日志的sed命令
  • sed初学者实用说明

相关文章

  • shell判断文件,目录是否存在或者具有权限的代码
  • shell脚本中使用iconv实现批量文件转码的代码分享
  • shell中的循环语句、判断语句实例
  • 监控服务器swap并重启php的Shell脚本
  • Shell脚本实现生成SSL自签署证书
  • Shell多线程操作及线程数控制实例
  • 利用linux的timerfd_create实现计时器示例分享
  • 在 Shell 提示符中显示 Git 分支名称的方法
  • linux bash shell中case语句的实例
  • 简介Linux中cp和mv搭配{,}在shell当中的用法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • shell学习教程获取命令行参数示例
    • Shell脚本判断Linux系统是32位还是64位的几种方法分享
    • 浅谈Linux磁盘修复e2fsck命令
    • linux下实现ftp自动备份shell脚本
    • Linux下启动tomcat的方法
    • Shell脚本实现生成SSL自签署证书
    • 一天一个shell命令 linux文本系列-file命令用法
    • linux awk高级应用实例
    • Shell脚本中的位置变量参数(特殊字符)实例讲解
    • Linux Shell脚本系列教程(二):终端打印命令详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有