sed命令详解 (转)

windows下cmd程序sed命令所需文件 windows下cmd程序sed命令所需文件,记得配环境变量 立即下载

  准备这几天学习一下shell,网上看到篇关于sed不错的讲解,对我这种初学者很容易看明白~

  原文地址:http://qifuguang.me/2015/09/21/sed命令详解/

概述

sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

使用语法

sed命令的使用规则是这样的:

1
sed [option] 'command' input_file

其中option是可选的,常用的option有如下几种:

  • -n 使用安静(silent)模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;
  • -e 直接在指令列模式上进行 sed 的动作编辑;
  • -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令;
  • -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);
  • -i 直接修改读取的文件内容,而不是由屏幕输出。

    常用的命令有以下几种:

  • a \: append即追加字符串, a \的后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选择的行的后面都加上字符串s;

  • c \: 取代/替换字符串,c \后面跟上字符串s(多行字符串可以用\n分隔),则会将当前选中的行替换成字符串s;
  • d: delete即删除,该命令会将当前选中的行删除;
  • i \: insert即插入字符串,i \后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选中的行的前面都插入字符串s;
  • p: print即打印,该命令会打印当前选择的行到屏幕上;
  • s: 替换,通常s命令的用法是这样的:1,2s/old/new/g,将old字符串替换成new字符串

命令示例

假设有一个本地文件test.txt,文件内容如下:

[qifuguang@winwill~]$ cat test.txt
this is first line
this is second line
this is third line
this is fourth line
this fifth line
happy everyday
end

本节将使用该文件详细演示每一个命令的用法。

a命令

1
2
3
4
5
6
7
8
9
[qifuguang@winwill~]$ sed '1a \add one' test.txt
this is first line
add one
this is second line
this is third line
this is fourth line
this is fifth line
happy everyday
end

本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用$表示最后一行,比如2,$表示第二行到最后一行中间所有的行(包含第二行和最后一行)。
本例的作用是在第一行之后增加字符串”add one”,从输出可以看到具体效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[qifuguang@winwill~]$ sed '1,$a \add one' test.txt
this is first line
add one
this is second line
add one
this is third line
add one
this is fourth line
add one
this is fifth line
add one
happy everyday
add one
end
add one

本例表示在第一行和最后一行所有的行后面都加上”add one”字符串,从输出可以看到效果。

1
2
3
4
5
6
7
8
9
[qifuguang@winwill~]$ sed '/first/a \add one' test.txt
this is first line
add one
this is second line
this is third line
this is fourth line
this is fifth line
happy everyday
end

本例表示在包含”first”字符串的行的后面加上字符串”add one”,从输出可以看到第一行包含first,所以第一行之后增加了”add one”

1
2
3
4
5
6
7
8
9
[qifuguang@winwill~]$ sed '/^ha.*day$/a \add one' test.txt
this is first line
this is second line
this is third line
this is fourth line
this is fifth line
happy everyday
add one
end

本例使用正则表达式匹配行,^ha.*day$表示以ha开头,以day结尾的行,则可以匹配到文件的”happy everyday”这样,所以在该行后面增加了”add one”字符串。

i命令

i命令使用方法和a命令一样的,只不过是在匹配的行的前面插入字符串,所以直接将上面a命令的示例的a替换成i即可,在此就不啰嗦了。

c命令

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed '$c \add one' test.txt
this is first line
this is second line
this is third line
this is fourth line
this is     fifth line
happy everyday
add one

本例表示将最后一行替换成字符串”add one”,从输出可以看到效果。

1
2
3
4
5
[qifuguang@winwill~]$ sed '4,$c \add one' test.txt
this is first line
this is second line
this is third line
add one

本例将第四行到最后一行的内容替换成字符串”add one”。

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed '/^ha.*day$/c \replace line' test.txt
this is first line
this is second line
this is third line
this is fourth line
this is fifth line
replace line
end

本例将以ha开头,以day结尾的行替换成”replace line”。

d命令

1
2
3
4
5
6
7
[qifuguang@winwill~]$ sed '/^ha.*day$/d' test.txt
this is first line
this is second line
this is third line
this is fourth line
this is fifth line
end

本例删除以ha开头,以day结尾的行。

1
2
3
4
[qifuguang@winwill~]$ sed '4,$d' test.txt
this is first line
this is second line
this is third line

本例删除第四行到最后一行中的内容。

p命令

1
2
3
4
5
[qifuguang@winwill~]$ sed -n '4,$p' test.txt
this is fourth line
this is fifth line
happy everyday
end

本例在屏幕上打印第四行到最后一行的内容,p命令一般和-n选项一起使用。

1
2
[qifuguang@winwill~]$ sed -n '/^ha.*day$/p' test.txt
happy everyday

本例打印以ha开始,以day结尾的行。

s命令

实际运用中s命令式最常使用到的。

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed 's/line/text/g' test.txt
this is first text
this is second text
this is third text
this is fourth text
this is fifth text
happy everyday
end

本例将文件中的所有line替换成text,最后的g是global的意思,也就是全局替换,如果不加g,则只会替换本行的第一个line。

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed '/^ha.*day$/s/happy/very happy/g' test.txt
this is first line
this is second line
this is third line
this is fourth line
this is fifth line
very happy everyday
end

本例首先匹配以ha开始,以day结尾的行,本例中匹配到的行是”happy everyday”这样,然后再将该行中的happy替换成very happy。

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed 's/\(.*\)line$/\1/g' test.txt
this is first
this is second
this is third
this is fourth
this is fifth
happy everyday
end

这个例子有点复杂,先分解一下。首先s命令的模式是s/old/new/g这样的,所以本例的old部分即\(.*\)line$,sed命令中使用\(\)包裹的内容表示正则表达式的第n部分,序号从1开始计算,本例中只有一个\(\)所以\(.*\)表示正则表达式的第一部分,这部分匹配任意字符串,所以\(.*\)line$匹配的就是以line结尾的任何行。然后将匹配到的行替换成正则表达式的第一部分(本例中相当于删除line部分),使用\1表示匹配到的第一部分,同样\2表示第二部分,\3表示第三部分,可以依次这样引用。比如下面的例子:

1
2
3
4
5
6
7
8
[qifuguang@winwill~]$ sed 's/\(.*\)is\(.*\)line/\1\2/g' test.txt
this  first
this  second
this  third
this  fourth
this  fifth
happy everyday
end

正则表达式中is两边的部分可以用\1和\2表示,该例子的作用其实就是删除中间部分的is。


OPC UA 服务端的模拟工具及客户端工具 详细介绍如何使用 Prosys OPC UA Simulation Server 作为 OPC UA 服务端的模拟工具来生成数据模型,并使用 Softing OPC UA Client 作为客户端工具,直观地查看和验证模拟生成的数据。 阅读详情

相关推荐

2025红队实战:Win11环境下ZAP、CobaltStrike与免杀套件深度评测

在网络安全领域,渗透测试与红队行动是评估系统防御能力的关键手段。其核心原理在于模拟真实攻击者的技术与流程,以发现潜在的安全漏洞。这项技术的价值在于主动识别风险,提升整体安全防护水平,广泛应用于企业安全评估、漏洞挖掘和攻防演练等场景。随着Windows 11系统普及,其增强的安全机制(如内存完整性、基于虚拟化的安全)对传统攻击工具链提出了新的挑战。本文聚焦于**CobaltStrike二开版**与**免杀套件**在Win11环境下的实战应用与深度对抗,探讨如何优化工具链以应对现代端点检测与响应(EDR)和高级

weixin_29315091的博客 308

Liunx sed

概述 sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的:

眭 475

SAP FICO会计凭证过账接口

-------------------------------------增加职能范围-ZHANGZG-2022.09.07 注释掉-2022.09.20。CONCATENATE '总账' ls_doc_item-hkont '要求输入成本对象值!*-------------------------------------增加职能范围-ZHANGZG-2022.09.07。*-------------------------------------增加职能范围-ZHANGZG-2022.09.07。

dingqing86的专栏 1078

sed中*的使用

在sed中*代表匹配零个或任意个前导字符。 例:将/etc/passwd文件中以n开头的所有单词的词首字母改为大写。 系统中有用户n2er,nw2er tail -10 /etc/passwd |sed "s/^n\([[:alpha:]]*\)/N\1/g" 刚开始的理解是n2er无法匹配到 tail -10 /etc/passwd |sed "s/^n\...

weixin_33946605的博客 897

别再只测电压了!用STM32G474的ADC玩点花的:过采样提升精度与多通道扫描实战

本文深入探讨了STM32G474系列单片机的ADC高级应用,包括硬件过采样技术实现16位精度和多通道扫描结合DMA的自动数据采集方案。通过详细的配置步骤和实战案例,帮助开发者突破传统电压测量局限,提升信号采集精度和系统效率,适用于工业监控、医疗设备等高精度应用场景。

weixin_42647395的博客 238

ads设计Doherty功放(1)

Doherty功放的设计

qq_40995480的博客 2万+

sed编辑器在windows平台上的使用

sed编辑器在windows平台上的使用

一个标题 6518

Python爬虫:如何抓取亚马逊商品评论和评分

通过本文的学习,您已经掌握了如何使用Selenium爬取亚马逊商品的评论数据,并处理反爬虫机制。特别是在亚马逊这样的大型电商平台,商品评论和评分不仅能够反映产品的质量和顾客的体验,还可以对商家进行竞争分析。通过爬取亚马逊的商品评论,您可以获得有价值的市场信息,如产品的优缺点、消费者的反馈等。通过查看源代码,您可以发现,亚马逊的商品评论和评分数据往往通过JavaScript动态加载,这也意味着在抓取时需要使用Selenium或Playwright等工具来模拟浏览器加载。亚马逊的评论页面支持分页加载。

2201_76125261的博客 1437

Sed命令详解

详细说明了sed命令的功能与工作原理,基础用法与进阶用法都涵盖了。sed身为Linux文本处理三剑客之一,不可不会。

m0_50111062的博客 2万+

Allegro输出光绘文件规范

添加钻孔表的具体步骤为:1.通过屏幕右边的Visibility选项的Views列表,将Drill层打开2.将Visibility选项中的PIN和Via选项都选中,见下图所示: 参数设好之后关闭NC Drill/Parameters窗口,输出数控机床钻孔文件的命令菜单为:Manufacture=>NC=>NC Drill…,打开的窗口如下: 输出数控机床钻孔文件的具体步骤为: 上图是光绘输出的层控制窗口,还有一个窗口是输出参数的控制窗口,我们通过点击上图的第二个列表项General Parameters来

axingxiansen的博客 2808

Zemax与Matlab交互:双胶合优化详细流程

Zemax与Matlab交互:双胶合优化详细流程

weixin_72050316的博客 629

【转】【Linux】sed命令详解

sed命令详解 sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的: se...

kakarrot2009的专栏 141

【蓝牙协议栈】【BLE】详解蓝牙BLE连接建立过程

advertiser。发出广播的设备observer或者scanner。可以扫描广播的设备initiator。能发起连接的设备master或者central。连接成功后的主设备,即主动发起packet的设备slave或者peripheral。连接成功后的从设备,即被动回传packet的设备图11通过时间把observer,initiator和central串起来了,其实这三个角色是相互独立的,也就是说一个设备可以只支持observer角色,而不支持initiator和central角色。

风云说通信 2520

(转)linux命令总结sed命令详解

原文链接:https://www.cnblogs.com/ginvip/p/6376049.html ...

qq_45597160的博客 535

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

sed -i命令详解 转

https://www.cnblogs.com/ev-zhk/p/4277023.html sed -i命令详解 [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的...

weixin_30293135的博客 238

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[转]sed命令详解

转自:http://www.iteye.com/topic/587673 1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主...

weixin_30675967的博客 88

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

sed命令详解!![转]

 Table of Contents 1. Sed简介 2. 定址 3. Sed命令 4. 选项 5. 元字符集 6. 实例 7. 脚本 1. Sed简介sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着

snow365的专栏 608

转 linux之sed命令详解

http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/test\/app\/oraInventory/\/db\/$SID\/app\/oraInventory/g" install.rsp sample: 查找开头为n 的行 sed -n /...

weixin_33922672的博客 383

【转】linux sed命令详解

原文网址:http://www.iteye.com/topic/587673 1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Se...

weixin_33895016的博客 86

sed命令详解<转>

1.简介 sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行

yongjian_luo的专栏 691

linux+sed+命令意思,【转】【Linux】sed命令用法详解

Sed学习笔记1. sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等...

weixin_34333047的博客 573

Linux sed命令详解(转)

1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下

afunx的专栏 585
上一篇: hdu3586 Information Disturbing 树形DP
下一篇: shell join命令详解(转)
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值