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字符串 *** 作集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)