sed '$行数i 新增内容' 文件名在文件里某行上面新增内容

sed '$行数a 新增内容' 文件名在文件里某行下面新增内容

-i.bak对源文件进行修改并备份修改之前源文件

#在文件里第5行上面插入cccccc内容
[root@VM-Project_Test /project]# sed '5i cccccc' note_txt
1
2
3
4
cccccc
5
6
7
8
9
10
#在文件里第5行下面插入cccccc内容
[root@VM-Project_Test /project]# sed '5a cccccc' note_txt
1
2
3
4
5
cccccc
6
7
8
9
10
#在文件里2行到5行下面插入cccccc内容
[root@VM-Project_Test /project]# sed '2,5a cccccc' note_txt
1
2
cccccc
3
cccccc
4
cccccc
5
cccccc
6
7
8
9
10

sed 'd' 文件名指定删除文件里某行内容 -i.bak对源文件进行修改并备份修改之前源文件

#删除文件里全部内容
[root@VM-Project_Test /project]# sed 'd' note_txt
#删除文件里第一行内容
[root@VM-Project_Test /project]# sed '1d' note_txt
2
3
4
5
6
7
8
9
10
#删除文件里第3行到7行内容
[root@VM-Project_Test /project]# sed '3,7d' note_txt
1
2
8
9
10
#删除文件里第二行和第8行内容
[root@VM-Project_Test /project]# sed '2d;8d' note_txt
1
3
4
5
6
7
9
10
#删除文本里最后一行内容
[root@VM-Project_Test /project]# sed '$d' note_txt
1
2
3
4
5
6
7
8
9

sed '内容行数s#需替换的内容#替换的新内容#' 文件名替换文件中内容 -i对源文件进行修改

sed -i.bak'内容行数s#需替换的内容#替换的新内容#' 文件名对源文件进行修改自动备份修改之前内容

[root@VM-Project_Test /project]# cat note_txt
1
2
3
4
hjdkfds5nmxcvlm
6
7
8
9
10
#在文件里第5行行首插入11111内容
[root@VM-Project_Test /project]# sed '5s#^#11111#' note_txt
1
2
3
4
11111hjdkfds5nmxcvlm
6
#在文件里第5行行尾插入22222内容
[root@VM-Project_Test /project]# sed '5s#$#22222#' note_txt
1
2
3
4
hjdkfds5nmxcvlm22222
6
#在文件里5行到7行行尾插入22222
[root@VM-Project_Test /project]# sed '5,7s#$#22222#' note_txt
1
2
3
4
hjdkfds5nmxcvlm22222
622222
722222
8
#对文件里第5行里的ds5n替换成0000
[root@VM-Project_Test /project]# cat note_txt
1
2
3
4
hjdkfds5nmxcvlm
6
[root@VM-Project_Test /project]# sed '5s#ds5n#0000#' note_txt
1
2
3
4
hjdkf0000mxcvlm
6

sed -n '文本行数p' 文件名读取文件里内容 -n默认输出内容到当前屏幕

#读取文件里第三行内容
[root@VM-Project_Test /project]# sed -n '3p' note_txt
3
#读取文件里第三行和第七行内容
[root@VM-Project_Test /project]# sed -n '3p;7p' note_txt
3
7
#读取文件里第三行到第七行内容
[root@VM-Project_Test /project]# sed -n '3,7p' note_txt
3
4
5
6
7
#读取文件里最后一行内容
[root@VM-Project_Test /project]# sed -n '$p' note_txt
10
#读取文件里第三行到最后一行内容
[root@VM-Project_Test /project]# sed -n '7,$p' note_txt
7
8
9
10

扩展正则反向引用

扩展正则 sed -r

把所有我需要的内容对两边进行过滤控制,把所需要的内容控制在(.*)里进行反向引用

一个(.*)就是一个分组里的内容\1就是取几个分组里的内容\0之前全部内容

#sed反向引用取主机IP
[root@VM-Project_Test /project]# cat test
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ip add inet 192.168.100.102 netmask 255.255.252.0 broadcast 10.0.19.255
inet6 fe80::5054:ff:fe2e:261c prefixlen 64 scopeid 0x20<link>
ether 52:54:00:2e:26:1c txqueuelen 1000 (Ethernet)
RX packets 156078 bytes 105983697 (101.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 93268 bytes 14552098 (13.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@VM-Project_Test /project]# cat test|sed -n '2p' | sed -r 's#(.*).*inet(.*)netmask(.*)#\1#'
ip add
[root@VM-Project_Test /project]# cat test|sed -n '2p' | sed -r 's#(.*).*inet(.*)netmask(.*)#\2#'
192.168.100.102
[root@VM-Project_Test /project]# cat test|sed -n '2p' | sed -r 's#(.*).*inet(.*)netmask(.*)#\3#'
255.255.252.0 broadcast 10.0.19.255
[root@VM-Project_Test /project]# cat test|sed -n '2p' | sed -r 's#(.*).*inet(.*)netmask(.*)#\3#'

举例:

某目录下有多个图片文件名字需要进行修改把所有图片文件名字中的finished给去掉修改位如stu_10086_3.jpg

[root@VM-Project_Test /project]# ls
stu_10086_1_finished.jpg stu_10086_3_finished.jpg stu_10086_5_finished.jpg stu_10086_7_finished.jpg
stu_10086_2_finished.jpg stu_10086_4_finished.jpg stu_10086_6_finished.jpg stu_10086_8_finished.jpg #先模糊查找出所需要修改的文件
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"
/project/stu_10086_8_finished.jpg
/project/stu_10086_6_finished.jpg
/project/stu_10086_3_finished.jpg
/project/stu_10086_2_finished.jpg
/project/stu_10086_1_finished.jpg
/project/stu_10086_7_finished.jpg
/project/stu_10086_4_finished.jpg
/project/stu_10086_5_finished.jpg
#sed替换反向引用过滤单取第一个组里的内容
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#\1#'
/project/stu_10086_8
/project/stu_10086_6
/project/stu_10086_3
/project/stu_10086_2
/project/stu_10086_1
/project/stu_10086_7
/project/stu_10086_4
/project/stu_10086_5
#sed替换反向引用过滤单取第二个组里的内容
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#\2#'
.jpg
.jpg
.jpg
.jpg
.jpg
.jpg
.jpg
.jpg
#sed替换反向引用过滤取第一个和二个组里的内容
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#\1\2#'
/project/stu_10086_8.jpg
/project/stu_10086_6.jpg
/project/stu_10086_3.jpg
/project/stu_10086_2.jpg
/project/stu_10086_1.jpg
/project/stu_10086_7.jpg
/project/stu_10086_4.jpg
/project/stu_10086_5.jpg #\0取所有
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#\0 \1\2#'
/project/stu_10086_8_finished.jpg /project/stu_10086_8.jpg
/project/stu_10086_6_finished.jpg /project/stu_10086_6.jpg
/project/stu_10086_3_finished.jpg /project/stu_10086_3.jpg
/project/stu_10086_2_finished.jpg /project/stu_10086_2.jpg
/project/stu_10086_1_finished.jpg /project/stu_10086_1.jpg
/project/stu_10086_7_finished.jpg /project/stu_10086_7.jpg
/project/stu_10086_4_finished.jpg /project/stu_10086_4.jpg
/project/stu_10086_5_finished.jpg /project/stu_10086_5.jpg
#sed替换反向引用过滤取组里的内容和所有内容进行移动改名
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#mv \0 \1\2#'
mv /project/stu_10086_8_finished.jpg /project/stu_10086_8.jpg
mv /project/stu_10086_6_finished.jpg /project/stu_10086_6.jpg
mv /project/stu_10086_3_finished.jpg /project/stu_10086_3.jpg
mv /project/stu_10086_2_finished.jpg /project/stu_10086_2.jpg
mv /project/stu_10086_1_finished.jpg /project/stu_10086_1.jpg
mv /project/stu_10086_7_finished.jpg /project/stu_10086_7.jpg
mv /project/stu_10086_4_finished.jpg /project/stu_10086_4.jpg
mv /project/stu_10086_5_finished.jpg /project/stu_10086_5.jpg
[root@VM-Project_Test /project]# find /project -name "*_finished.jpg"|sed -r 's#(.*)_finished(.*)#mv \0 \1\2#'|bash
[root@VM-Project_Test /project]# ls
stu_10086_1.jpg stu_10086_3.jpg stu_10086_5.jpg stu_10086_7.jpg
stu_10086_2.jpg stu_10086_4.jpg stu_10086_6.jpg stu_10086_8.jpg

liunx系统sed命令使用的更多相关文章

  1. Linux系统sed命令常用参数实战

    Linux系统sed命令常用参数实战 常用参数 -n 输出某行的文本内容,通常与p联合使用, -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化 -f 以命令中指定的scri ...

  2. Linux系统——sed命令

    sed命令精讲 cat工作原理 cat命令只想文件,把文件打开后,将文件中所有内容一次性读到内存中,从内存里一次性输出到屏幕上,此时可能存在内存装不下的情况,因此cat命令只能查看小文件内容,不能读取 ...

  3. liunx系统top命令详解

    ps: 1.按1可以进行 CPU各个和总CPU汇总的切换2.cpu0是最关键的,总控管理各个CPU 3.默认情况下仅显示比较重要的 PID.USER.PR.NI.VIRT.RES.SHR.S.%CPU ...

  4. Liunx运维(十二)-Liunx系统常用内置命令

    文档目录: 一.Liunx内置命令概述 二.LIunx常用内置命令实例 1.help查看内置命令帮助2.查看内置命令使用方法3.":" 占位符4. "." 与s ...

  5. 【linux系统】命令学习(六)awk sed grep 与管道的使用

    程序运行环境输入与输出 标准输入0 read a;echo $a 标准输出1 echo cesh 错误输出 ls notr 管道重定向 管道与管道之间可以重定向 管道与文件之间可以重定向 用于写入 将 ...

  6. linux shell 用sed命令在文本的行尾或行首添加字符

    转自 http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed ...

  7. 【转】sed命令详解

    原文:http://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html sed命令行格式为: sed [-nefri]  'command' ...

  8. Liunx系统学习一,liunx系统的目录结构及含义

    LIUNX系统目录结构: “/” ===>这是linux文件系统的入口,也是整个linux文件系统的根目录,linux不同于windows,没有所谓的C,D,E盘,整个liunx只有一个根分区 ...

  9. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  10. sed命令基础2

    我在sed命令基础里面说了一下sed的基础用法,sed还有一些高级用法,由于我也是在学习中,写的博客可能会有想不到的地方,有问题希望大家指出. sed的高级用法主要在于两个空间的使用,模式空间和保持空 ...

随机推荐

  1. 论文解读(MetaAdapt)《MetaAdapt: Domain Adaptive Few-Shot Misinformation Detection via Meta Learning》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:MetaAdapt: Domain Adaptive Few-Shot Misinformation De ...

  2. 【日常踩坑】解决 pip 安装第三方包时因 SSL 报错

    目录 踩坑 什么是 SSL ? 为什么会报错 解决办法 1. 临时关闭代理.VPN 或者网络抓包等软件 2. 通过镜像的 HTTP 源来避免 SSL 认证问题 3. 切换至低版本 pip 参考资料 踩 ...

  3. 苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

    Stable Diffusion的部署对小白来说非常麻烦,特别是又不懂技术的人.今天分享两个一键傻瓜式安装包,对小白来说非常有用.下面两个任选一个安装就可以. 一.DiffusionBee 简单介绍 ...

  4. Vs2022安装.Net4.5程序包

    因为VS2022将不再支持.NET4.5,即使在Visual Studio Installer中也找不到.NET4.5的选项 我们可以在NuGet包中下载.NET 4.5的工具包 找到程序包管理器控制 ...

  5. vue3+ts Axios封装—重复请求拦截

    创建好vue3项目 1.安装Axios与Element Plus Axios安装 npm install axios Element Plus 安装 官网入口:https://element-plus ...

  6. c++中的宏#define用途

    宏的一些作用,包括但不限于这些 定义一个变量.字符串.类型 定义一个函数.条件表达式 条件编译.调试信息,异常类 定义结构体.命名空间 定义模版.枚举.函数对象 #define宏定义在C++中用于定义 ...

  7. Nomad 系列-Nomad+Traefik+Tailscale 集成实现零信任安全

    系列文章 Nomad 系列文章 Traefik 系列文章 Tailscale 系列文章 概述 终于到了令人启动的环节了:Nomad+Traefik+Tailscale 集成实现零信任安全. 在这里: ...

  8. Solution -「CF 1303G」Sum of Prefix Sums

    Description Link. 对于一棵树,选出一条链 \((u,v)\),把链上结点从 \(u\) 到 \(v\) 放成一个 长度 \(l\) 的数组,使得 \(\sum_{i=1}^{l}\s ...

  9. k8s 自动扩缩容HPA原理及adapter配置详解👑

    大家好,我是蓝胖子,都知道,k8s拥有自动扩缩容机制HPA,我们能够通过配置针对不同的扩缩容场景进行自动扩缩容,往往初学者在面对其中繁多配置的时候会学了又忘记,今天我将会以一种不同的视角,结合api ...

  10. NEFU OJ Problem1356 帽儿山奇怪的棋盘 题解

    帽儿山奇怪的棋盘 题目: Time Limit:1000ms | Memory Limit:65535K Description 军哥来到了帽儿山,发现有两位神人在顶上对弈.棋盘长成下图的模样: 每个 ...