首页 > 其他分享 >liunx系统sed命令使用

liunx系统sed命令使用

时间:2023-12-12 15:50:20浏览次数:34  
标签:stu 10086 jpg project 命令 finished sed liunx

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

标签:stu,10086,jpg,project,命令,finished,sed,liunx
From: https://www.cnblogs.com/xiao-tuanzi/p/17897046.html

相关文章

  • Linux常用命令
    前言本文意在记录平时在linux系统中的常用命令,还有一些常用软件(比如:nginx、redis、mysql等)的常用命令。以提高自己平常开发效率,因为有的时候会突然忘记。......
  • kvm virsh常用命令
    #查看已启动虚机[root@localhostdriver]#virshlistIdNameState----------------------------------------------------3ttt2running5ttt3running#查看所有虚机......
  • ubuntu 22.04 server 命令行很卡 很慢 无语
    我找到了另一个禁用帧缓冲区。我添加blacklistvga16fb到/etc/modprobe.d/blacklist-framebuffer.conf.......
  • 收集渗透中会用到的常用命令
    command收集渗透中会用到的常用命令。建议直接[Ctrl+F]查找java命令执行如下编码网站:https://ares-x.com/tools/runtime-exec/https://r0yanx.com/tools/java_exec_encode/https://www.bugku.net/runtime-exec-payloads/手动编码操作bash-c{echo,cGluZyAxMjcuMC4wLjE......
  • 全网最全,MySQL 增删改查高级命令硬核总结
    MySQL入门教程:全网最全,MySQL增删改查高级命令硬核总结原创 白鹿第一帅 白鹿第一帅 2023-12-0507:00 发表于四川文章目录前言一、连接到MySQL数据库1.1、连接到本机上的MySQL1.2、连接到远程主机上的MySQL二、退出MySQL命令三、修改MySQL密码3.1、先给roo......
  • 【HarmonyOS】Web组件使用setResponseIsReady+setResponseData实现异步自定义响应数据
    【问题描述】在web组件的自定义响应数据方法如下:Web().onInterceptRequest((event)=>{…})如果需要在callbak中如果使用Promise等获取异步信息,并读取该如何操作 【解决方案】通过setResponseIsReady+setResponseData的方式控制数据返回,先设置setResponseIsReady为fal......
  • Redis命令整合(五) Zset型
    有序集合。使用分数score来标记每个元素1.添加元素zaddmathScore98jordan86james77kobe添加了三个元素,分数在前 2.假如添加的元素已经存在的话,则会替换原来的分数。zaddmathScore79kobe则将kobe的分数改为79 3.取某一个元素的分数zscoremathScor......
  • Redis命令整合(四) Set型
    集合类型。元素各不相同没有顺序1.添加元素sadd[keyName][member1][member2]...eg:saddlettersabc2.删除元素srem[keyName][member1][member2]...egsremlettersab3.列出所有元素smembers[keyName]eg:smemberletters4.判断是否存在sismem......
  • shell 获取返回值、上一次命令、上次命令参数
    前言全局说明shell获取返回值、上一次命令、上次命令参数一、获取上一次命令1.$?,上一次命令执行结果成功0;失败非0echo$?2.!!,执行上一次命令,是!-1的快捷方式3.!n,表示执行history里第n条命令,如!2表示执行ls6789104.!-n表示倒数第n条命......
  • stp生成树解析及其命令配置
    STP生成树协议概念:stp是为了解决网络中的环路问题的一个协议,当网络中有多余通信路径的时候,会选择一条主要路径阻塞备用端口(BP),因此网络拓扑类似树枝,所以叫做生成树协议stp运行原理://选举根交换机:选举根交换机是通过比较网桥ID(BID)来选举的,网桥ID(BID)的组成如下:优......