首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed替换文本

使用sed替换文本
EN

Stack Overflow用户
提问于 2013-05-20 16:43:48
回答 1查看 115关注 0票数 1

我做错了什么?

代码语言:javascript
复制
sed -i 's/** [out :: apple.mango@machine-6.mysite.com]/machine-6/g' file1.csv
Error -: sed: -e expression #1, char 58: Invalid range end

我基本上想通过bash将apple.mango@machine-6.mysite.com替换为machine-6?

另外,我想对所有机器(共7台)执行此操作,因此我是否必须为每台机器单独编写此行,或者是否可以对所有机器使用相同的替换行?

感谢您的任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-20 16:46:04

方括号是特殊字符。当你从字面上说它们时,你需要转义它们,以及圆点:

代码语言:javascript
复制
\[out :: apple\.mango@machine-6\.mysite\.com\]

另外,如果你指的是字面上的星号,最好也对它们进行转义。

是的,您可以使用seq编写一个循环来遍历7个机器号

代码语言:javascript
复制
for i in $(seq 7); do
    sed -i "s/\*\* \[out :: apple\.mango@machine-$i\.mysite\.com]/machine-$i/g" file1.csv
done

请注意我在这里使用的双引号,即单引号prevernt变量扩展。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16645685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档