我做错了什么?
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台)执行此操作,因此我是否必须为每台机器单独编写此行,或者是否可以对所有机器使用相同的替换行?
感谢您的任何帮助
发布于 2013-05-20 16:46:04
方括号是特殊字符。当你从字面上说它们时,你需要转义它们,以及圆点:
\[out :: apple\.mango@machine-6\.mysite\.com\]另外,如果你指的是字面上的星号,最好也对它们进行转义。
是的,您可以使用seq编写一个循环来遍历7个机器号
for i in $(seq 7); do
sed -i "s/\*\* \[out :: apple\.mango@machine-$i\.mysite\.com]/machine-$i/g" file1.csv
done请注意我在这里使用的双引号,即单引号prevernt变量扩展。
https://stackoverflow.com/questions/16645685
复制相似问题