sed替换

1. sed可以替换给定的文本中的字符串,可以利用正则表达式进行匹配
$ sed 's/pattern/replace_string/' file
或者
$ cat file | sed 's/pattern/replace_string/' file
使用-i选项,可以将替换的结果应用于原文件,也可以借助重定向来保存文件:
sed 's/text/replace/' file > newfile
其实可以使用
sed -i 's/pattern/replace_string/' file
后缀/g意味着替换每一处,有时候不需要替换前N处匹配,有一个选项可以用来忽略前N处匹配,并从第N+1处开始替换。
$ echo this thisthisthis | sed 's/this/THIS/2g'
$ echo this thisthisthis | sed 's/this/THIS/3g'
当需要从第N处开始匹配时,可以使用/Ng
字符/在sed中作为定界符使用,也可以用其他字符代替。

1. 删除空白行
sed '/^$/d' file

2. 已匹配的字符串标记&
echo this is an example | sed 's/\w\+/[&]/g'
正则表达式\w\+匹配每个单词,然后用[&]来替换它,&对应于之前所匹配的单词。

3. 子串匹配标记\1
&代表匹配给定样式的字符串,但我们也可以匹配给定样式的其中一部分
echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
这条命令将digit 7 替换成7,样式中匹配到的子串是7,\(pattern\)用于匹配子串,模式被包括在使用斜线转义过的()中,对于匹配到的第一个子串,其对应的标记是\1,匹配到的第二个子串是\2,往后依次类推,下面示例中包含了多个匹配:
echo seven EIGHT | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'

4. 引用
$text=hello
echo "hello world" | sed "s/$text/HELLO/"

5. 追加内容 sed ‘/匹配词/a\要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)
i 插入内容 sed ‘/匹配词/i\要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)
示例:
#我要把文件的包含“chengyongxu.com”这个关键词的行前或行后加入一行,内容为“allow chengyongxu.cn”

行前加
sed -i '/allow chengyongxu.com/i\allow chengyongxu.cn' the.conf.file
行前后
sed -i '/allow chengyongxu.com/a\allow chengyongxu.cn' the.conf.file

6. 删除指定行的上一行
sed -i -e :a -e '$!N;s/.*\n\(.*ServerName abc.com\)/\1/;ta' -e 'P;D' $file
删除指定字符串之间的内容
sed -i '/ServerName abc.com/,/\/VirtualHost/d' $filehttp://www.linuxso.com/shell/17542.html

7. 也可在vi模式下,将文本中的内容替换,esc : %s/dog/sdog/ 这样可以把文件直接修改,然后保存即可
在vi模式下也可进行区间替换,如将第2至第7行之间的cat 换成scat,esc : 2,7 s/cat/scat/ 同样保存修改即可

8. sed查找行,如查找出vsftpd.conf中的非注释行
[root@server4 shell]# cat vsfptd.conf | sed '/#/d'
删除空格行和以#号开头的行,并写入文件vsftpd.config,用-e开关连接两个控制语句
[root@server4 shell]# cat vsfptd.conf | sed -e'/^#/d' -e '/^$/d' >vsftpd.config

9. sed删除匹配的行的后续多行
$sed '/Storage/,+2d' thegeekstuff.txt
sed删除匹配行到尾行
$sed '/Website Design/,$d' thegeekstuff.txt
sed删除匹配行到首行

转载于:https://www.cnblogs.com/forilen/p/4387706.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql的中文乱码url,MySQL 中文显示乱码

MySQL 中文显示乱码MySQL 中文显示乱码如果你遇到乱码问题,可以从下面几个问题逐步检查:(1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码。…

前端学习(1422):ajax获取服务器端的响应

// 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) > {res.send(hello geyao) }) ap…

asp.net 网站开发流程总结

由于这学期要做asp.net的网站开发,导师让我们在前期做详细的计划说明,时间安排。由于网站开发流程不知道,以及需要学什么指示都是盲懂,所以计划安排需在了解大致流程之后才能做出来,一下是询问同学和在网上查阅&#x…

php v9 如何获取超级管理员权限,Windows8.1如何获取超级管理员权限

Win8.1系统下默认管理员权限是有一定权限的,系统内部分文件是无法通过管理员权限进行操作的,需要获取更高级别的超级管理员权限才可,下面我们主要介绍下Win8.1如何利用注册表来获取超级管理员权限。操作步骤:1、首先建立记事本&am…

前端学习(1423):ajax错误处理

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) > {res.send(hello gey…

delphi 中几种多线程操作方式

在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程。 主线程又程为UI线程。 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它…

如何 循环 字母 php,PHP-php循环打印a-z字母的疑惑

读一下文档吧:docPHP follows Perls convention when dealing with arithmetic operations on character variables and not Cs. For example, in PHP and Perl $a Z; $a; turns $a into AA, while in C a Z; a; turns a into [ (ASCII value of Z is 90, ASCII v…

前端学习(1424):ajax低版本兼容问题

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) &…

4 int.parse方法调用问题和同行评审

1 关于int.parse 的方法调用问题 我们知道int.parse用于数据类型的转换,int.parse(object obj)这个可以将填入的参数obj转换为int的数据类型。 我们在使用int.parse()时回遇到一系列问题。 例如:int.parse(null)会返回异常,另外int.Parse(&qu…

php zip下载损坏,php – 从zip中提取时损坏图像

我尝试使用curl从同一服务器中的一个虚拟主机下载一个zip文件到另一个虚拟主机. Zip文件包含* .php和* .jpg文件.问题是:有时JPG文件会损坏,如下所示:这是我的代码:$out fopen(ABSPATH./templates/default.zip,w);$ch curl_init();curl_set…

前端学习(1425):同步异步概述

// 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) > {res.…

在 Swift 语言中更好的处理 JSON 数据:SwiftyJSON

SwiftyJSON能够让在Swift语言中更加简便处理JSON数据。 With SwiftyJSON all you have to do is: ?1234let json JSONValue(dataFromNetworking)if let userName json[0]["user"]["name"].string{//Now you got your value}And dont worry about the Op…

前端学习(1426):ajax封装

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) &…

振子天线三维方向图 matlab仿真,1阵列天线方向图的MATLAB实现

阵列天线方向图的MATLAB实现第25卷第1期2010年6月西藏大学学报(自然科学版)JOURNALO&a…

前端学习(1427):ajax封装二

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) &…

深入理解css优先级

为什么要写这篇文章是因为 <style type"text/css"> body h1 {color: green; } html h1 {color: purple; } </style><body><h1>Here is a title!</h1> </body> 上面代码执行结果是这样的。按照我的理解&#xff0c;body在DOM中比…

php查询数据方法,php查询数据库的方法

php查询数据库的方法发布时间&#xff1a;2020-08-28 14:14:45来源&#xff1a;亿速云阅读&#xff1a;104作者&#xff1a;小新php查询数据库的方法&#xff1f;这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容…

powerdesigner 反向工程 oracle,PowerDesigner oracle 反向工程到cdm文件

用PowerDesigner反向工程来导处数据模型图是很方便的&#xff0c;以powerdesigner11 和oracle8i为例(其他版本略有不同)基本步骤如下&#xff1a;1&#xff0c;打开或新建一个PhysicalDataModel文件(.pdm) &#xff0c;(DBMS 是Sybase AS Anywhere 9 &#xff0c;或者下拉列表中…

前端学习(1428):ajax封装三

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) &…

前端学习(1429):ajax封装四

ajax.js // 引用expess框架 const express require(express); // 处理路径 const path require(path);const bodyParser require(body-parser); const fs require(fs);// 创建网站服务器 const app express(); app.use(bodyParser.json()); app.get(/first, (req, res) &…