sed匹配全行,行首,行尾后替换或添加字符

sed匹配全行,行首,行尾后替换或添加字符,第1张

sed匹配全行,行首,行尾后替换或添加字符

sed 替换匹配开头字符的行

配置文件/etc/configtxt中有一行是

version=xxxxxx

每次进行版本发布,需要重新填写这个值,

可以用shell脚本中,加入sed命令来完成新版本号的替换

#首先定义一个新版本号的变量

var="version=611"

sed -i '/^version=/c'$var'' /etc/configtxt

i :直接修改读取的文件内容,而不是输出到终端。

^表示一行的开头

sed匹配某一行开头,替换整行内容

sed -i '/^cloud_server/ccloud_server_ip = update' nametxt

[root@centos8-38 opt]# cat sedtxt

coud_server xxdfdkjjjj1111 3333

coud_server 3333

coud_server dddd 3333

[root@centos8-38 opt]# coud="cloud_server=1111"

[root@centos8-38 opt]#

[root@centos8-38 opt]# sed  '/^coud/c'$coud'' sedtxt

cloud_server=1111

cloud_server=1111

cloud_server=1111

sed 匹配部分替换

[root@centos8-38 opt]# sed  's/dddd/gggg/g' sedtxt

coud_server xxdfdkjjjj1111 3333

coud_server 3333

coud_server gggg 3333

sed 匹配行中部分内容,替换整行

[root@centos8-38 opt]# sed  '/dddd/c'$coud'' sedtxt

coud_server xxdfdkjjjj1111 3333

coud_server 3333

cloud_server=1111

sed 也可以匹配行首或是行尾,中间部分内容后,

再行首或是行尾添加内容。

如下面:

666& 表示添加到行首,&666 表示添加到行尾。

[root@centos8-38 opt]# sed 's/^ccc/666&/g' sedtxt

coud_server xxdfdkjjjj1111 3333

coud_server 3333

coud_server dddd 3333

666cccc 2222

666cccc 111

[root@centos8-38 opt]# sed 's/^ddd/666&/g' sedtxt

coud_server xxdfdkjjjj1111 3333

coud_server 3333

666coud_server dddd 3333

cccc 2222

cccc 111

1 sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' csv2drds-TF_B_PAYLOG_Djson

---指定文件替换,将文件中的CANCEL_TIME替换成CANCEL_RECV_TIME;

2 sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' `grep CANCEL_TIME -rl /TF_B_PAYLOG_Djson`

---批量文件替换,递归查找含CANCEL_TIME的文件,将所有文件中的CANCEL_TIME替换成CANCEL_RECV_TIME;

3 sed -i 's/\/tmp\/ditagent\/TF_B_PAYLOG_Dcsv/\/vdata\/datapre\/281\/'"$filename"'/g' $jsonname

---带/的字符串替换,将/tmp/ditagent/TF_B_PAYLOG_Dcsv替换成/vdata/datapre/281/'"$filename"'

4 sed -i 's/^/beginstring&/g' txt

---在所有行首添加字符串;

5  sed -i 's/$/&endstring/g' txt

---在所有行末添加字符串

6 sed -i '2s/原字符串/替换字符串/g' txt

---替换第2行

7 sed -i '$s/原字符串/替换字符串/g' txt

---替换最后一行

8 sed -i  '2,5s/原字符串/替换字符串/g' txt

---替换2到5行

9 sed -i  '2,$s/原字符串/替换字符串/g' txt

---替换2到最后一行

10 sed 's/\x80/|/g' testdat |iconv -f gbk -t utf-8 > testutf8dat

---把testdat中的欧元符号替换成竖线,再将文件gbk格式转成utf8

-i选项是直接在文件中替换,不在终端输出;

-r选项是所给的path中的目录递归查找;

-l选项是输出所有匹配到oldstring的文件;

s/表示替换

/g表示全局替换

把字符串变量和字面值连接起来,组成新的字符串。推荐3个方法:

对字符串进行单个字符索引时,无论是从前往后索引,还是从后往前索引,索引序号一定要在范围内,否则出错。

对字符串进行切片截取时,采用 str[start:end] 的方式。start,end可以正,可以负。且如果start标识的位置大于等于end标识的位置,则截取字符串为空。start,end超出字符串的极限位置,那么就用最值。start默认为0,end默认为字符串长度。

一般的基于文本和行字符串处理,使用sed,awk,grep等工具就可以了,这些命令行工具用起来更便捷,但是也没有python的这些函数强大。比如没法实现非贪婪模式匹配。如下:

把连续的数字提取出来,其他的字符抛弃

python处理字符串,比linux命令要复杂一些,功能也更强大一些。对于简单的处理任务,linux命令已经足够,python为的是一些更复杂的处理 *** 作。如果两者都会,岂不是更好?

以上就是关于sed匹配全行,行首,行尾后替换或添加字符全部的内容,包括:sed匹配全行,行首,行尾后替换或添加字符、Linux命令之sed-替换字符串、python字符串 *** 作集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9741107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存