awk && sed (2)===sed 中的-i 不能和nr一起使用

简介:

还是替换大小写字母的问题,这是我整理博客的时候遇到的一点小问题

sed -i 用来改变文本内容

root@localhost ding]# echo ding xue | sed -r 's/([^ ]+)/\u&/g'

Ding Xue

[root@localhost ding]# 


这是替换一个字符串,如果我们要替换一个文本中的内容怎么办呢?

例如

[root@localhost ding]# cat 111

ding xue

dingxue

ding da xue

[root@localhost ding]# 

如果我们把这个文本中的首字母变成大写,怎么办呢,是这样吗?例如:

[root@localhost kkk]# sed -ir 's/([^ ]+)/\u&/g' 111

[root@localhost kkk]# cat 111

ding xue

dingxue

ding da xue

[root@localhost kkk]# ls

111  111r

[root@localhost kkk]# 

看结果,并没有改过来,我们ls 一下,发现多了个111r,这是怎么回事呢?

其实这是sed 的一个小bug ,当我们想改变一个文本的时候sed -i如果和rn写在一起就会出错,我们看下111r的内容。也没有改变过来,如果写在一起,sed 就默认把i后面的内容当作备份的后缀。

root@localhost kkk]# cat 111r

ding xue

dingxue

ding da xue

[root@localhost kkk]# 

如果想真正改变文件内容,我们可以这么做。这样就改过来了。

[root@localhost kkk]# sed -r 's/([^ ]+)/\u&/g' -i  111

[root@localhost kkk]# cat 111

Ding Xue

Dingxue

Ding Da Xue

[root@localhost kkk]# 


本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1970090,如需转载请自行联系原作者

相关文章
|
关系型数据库 MySQL Unix
|
机器学习/深度学习 Perl 5G

热门文章

最新文章