Linux命令 -- sed

news/2024/11/17 5:41:15/

Linux命令 -- sed

  • 插入
  • 删除
  • 覆盖
  • 复制
  • 打印
  • 替换
  • 参数 -f

mo.txt文件内容,若无特别说明,默认如下

[root@localhost testdir]# cat mo.txt 
1
2
3
4
5

插入

先来展示一个执行未生效的

# 给第2行插入hello world。命令执行之后会打印效果,但文件内容未修改
[root@localhost testdir]# sed -e '2i\hello world' mo.txt 
1
hello world
2
3
4
5
[root@localhost testdir]# cat mo.txt 
1
2
3
4
5
# 给第2行插入内容。命令执行立即生效,并且生成备份文件,而备份文件名就是原文件名加e,对应参数e,也可以用其他字母
# 如不要备份文件,那么省略参数e即可
[root@localhost testdir]# sed -ie '2i\this is 2 line' mo.txt 
[root@localhost testdir]# ll
total 8
-rw-r--r--. 1 root root 25 Aug 12 21:22 mo.txt
-rw-r--r--. 1 root root 10 Aug 12 20:52 mo.txte
[root@localhost testdir]# cat mo.txt
1
this is 2 line
2
3
4
5
[root@localhost testdir]# cat mo.txte
1
2
3
4
5

i和a的区别在于,i是将内容插入指定行之前,a是将内容插入指定行之后。

[root@localhost testdir]# sed -i '2a\this is a two' mo.txt 
[root@localhost testdir]# cat mo.txt 
1
this is two
this is a two
2
3
4
5
[root@localhost testdir]# sed -i '2i\this is i two' mo.txt 
[root@localhost testdir]# cat mo.txt 
1
this is i two
this is two
this is a two
2
3
4
5

删除

删除第四行内容

[root@localhost testdir]# sed -i '4d' mo.txt 
[root@localhost testdir]# cat mo.txt 
1
2
3
5

覆盖

[root@localhost testdir]# sed -i '3c\fu gai di san hang' mo.txt 
[root@localhost testdir]# cat mo.txt 
1
2
fu gai di san hang
4
5

复制

[root@localhost testdir]# sed -i '4p' mo.txt 
[root@localhost testdir]# cat mo.txt 
1
2
3
4
4
5

打印

[root@localhost testdir]# sed -n '4p' mo.txt 
4

替换

以下使用asd.txt文件做演示,内容默认如下

[root@localhost testdir]# cat asd.txt 
a new new ewn new line
a new line
1
2
3
4
5

将第1行的第一个字符串new替换为old。注意此命令的斜杠方向。

[root@localhost testdir]# sed -i '1s/new/old/' asd.txt 
[root@localhost testdir]# cat asd.txt 
a old new ewn new line
a new line
1
2
3
4
5

将第1行的所有字符串new替换为old。参数g是global,代表全局的意思

[root@localhost testdir]# sed -i '1s/new/old/g' asd.txt 
[root@localhost testdir]# cat asd.txt 
a old old ewn old line
a new line
1
2
3
4
5
# 进行全局替换,但每行只替换一次
sed -i 's/new/old/' asd.txt 
# 进行全局替换,所有内容为new的,都替换为old
sed -i 's/new/old/g' asd.txt 

-i 代表执行生效,而真正的修改操作取决于行号后面的参数,i和a插入,d删除,c是覆盖,p复制或打印,s替换。

参数 -f

将脚本内容写入文件中,用-f参数来读取执行。文件后缀可随意。
在示例中,我将脚本写入到script.txt文件,脚本含义是,复制第二行,第一行内容替换为di yi hang ti huan,在第五行之前插入ha ha ha。

[root@localhost testdir]# cat mo.txt 
this is 1 line
this is 2 line
this is 3 line
this is 4 line
this is 5 line
[root@localhost testdir]# cat script.txt 
2p
1c\di yi hang ti huan
5i\ha ha ha
[root@localhost testdir]# sed -f script.txt mo.txt 
di yi hang ti huan
this is 2 line
this is 2 line
this is 3 line
this is 4 line
ha ha ha
this is 5 line
# 执行成功,但文件内容并未修改
[root@localhost testdir]# cat mo.txt 
this is 1 line
this is 2 line
this is 3 line
this is 4 line
this is 5 line
# 添加参数-i,修改原文件
[root@localhost testdir]# sed -f script.txt -i  mo.txt 
[root@localhost testdir]# cat mo.txt 
di yi hang ti huan
this is 2 line
this is 2 line
this is 3 line
this is 4 line
ha ha ha
this is 5 line
[root@localhost testdir]# 

http://www.ppmy.cn/news/1028001.html

相关文章

Microsoft365家庭版1年订阅新功能及版本对比

Microsoft 365可帮助您工作、学习、组织、连接和创,只需一项方便的订阅,即可尽享具有 Microsft 365 的6款精品应用、可同时登录5 台设备(包括 Windows、macOS、iOS 和 Android 设备)、高级安全性等,并且可以自由管理授…

fork函数和exec族函数的结合使用 的案例

首先回顾之前所讲,在说明“为什么要创建进程”的时候,提到过以下两个原因: 其中第一个原因很好理解,而第二个原因就包含了上节所讲的exec族函数的知识点,并且不管是之前的博文还是上节的exec,都提到了一点“…

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前准备 移植好fbtft屏幕驱动 参考链接:友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕 获取源码 名称地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 创建工程目录 创…

婚恋交友h5多端小程序开源版开发

婚恋交友h5多端小程序开源版开发 以下是婚恋交友H5多端小程序的功能列表: 用户注册和登录:用户可以通过手机号码或第三方账号注册和登录。个人信息填写:用户可以填写个人基本信息,包括姓名、性别、年龄、身高、体重、学历、职业等…

STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波

今日主要学习一款倾角传感器——MPU6050,往后对单片机原理基础讲的会比较少,更倾向于简单粗暴地贴代码,因为经过前些日子对MSP432的学习,对原理方面也有些熟络了,除了在新接触它时会对其引脚、时钟、总线等进行仔细一些的研究之外…

P5738 【深基7.例4】歌唱比赛

题目描述 n ( n ≤ 100 ) n(n\le 100) n(n≤100) 名同学参加歌唱比赛,并接受 m ( m ≤ 20 ) m(m\le 20) m(m≤20) 名评委的评分,评分范围是 0 0 0 到 10 10 10 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分&#x…

检测新突破 | AlignDet:支持各类检测器自监督新框架(ICCV2023)

引言 论文链接:https://arxiv.org/abs/2307.11077 项目地址:https://github.com/liming-ai/AlignDet 这篇论文主要研究目标检测领域的自监督预训练方法。作者首先指出,当前主流的预训练-微调框架在预训练和微调阶段存在数据、模型和任务上的…

Android Studio实现Spinner下拉列表

效果图 点击下拉列表 点击某一个下拉列表 MainActivity package com.example.spinneradapterpro;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Spinn…