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. CF1787E The Harmonization of XOR 题解

    CF1787E The Harmonization of XOR 题目大意 给定 \(n\) 个数 \([1, 2, 3, \cdots, n]\) 和两个正整数 \(k\) 和 \(x\). 将这些 ...

  2. 11、Mybatis之逆向工程

    11.1.正向与逆向工程概述 正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表:例如Hibernate是支持正向工程的. 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成Ja ...

  3. P2024 [NOI2001] 食物链 || #576. 食物链【NOI2001】 (并查集)

    空降锣鼓 空降OJ 题解: #include<bits/stdc++.h> using namespace std; int n,k; int d,x,y; int ans; int fa ...

  4. Ipa打包并安装到iphone

    手动运行篇: 在真机上运行appium会进行闪退,因为我们的真机是不合法的真机,怎么样才能合法呢,要注册我们的设备才行 要对app进行打包,要先进行签名,要签名,就需要证书,证书可以自己伪造,但是这一 ...

  5. 2.10 PE结构:重建重定位表结构

    Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制.在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用 ...

  6. .NET Core 实现Excel的导入导出

    目录 前言 NPOI简介 一.安装相对应的程序包 1.1.在 "管理NuGet程序包" 中的浏览搜索:"NPOI" 二.新建Excel帮助类 三.调用 3.1. ...

  7. mpi转以太网连接200plc以太网监控同时与步科触摸屏通信

    西门子PLC200 226PLC转以太网通过PPI-ETH-XD1.0集中采集不占用编程口同时与步科触摸屏通信 现有设备及联网要求客户车间内有6台纺机设备,控制系统采用西门子PLC,型号为CPU226 ...

  8. Teamcenter RAC开发 GoToHelper

    RAC开发,有时候会用到发送到我的Teamcenter 可以参考 com.teamcenter.rac.tcapps 包下 package com.teamcenter.rac.tracelinks; ...

  9. 4款免费且实用的.NET反编译工具

    反编译工具的作用 .NET反编译工具能够将已经编译好的.NET程序集转换为易于理解的源代码,它们可以帮助开发人员恢复丢失的源代码.理解和分析第三方组件dll.学习其他人的代码.更好的查找修复 bug ...

  10. 有人说SaToken吃相难看,你怎么看。

    前言 今天摸鱼逛知乎,偶然看到了一个回答,8月份的,是关于SaToken的,一时好奇就点了进去. 好家伙,因为一个star的问题,提问的人抱怨了许多,我有些意外,就仔细看了下面的评论,想知道一部分人的 ...