我有一个简单的(至少我认为是)分配,我必须使用sed用文件中的用户名替换字符串。可以说它的内容看起来像这样:
1)
2)
3)
3) www
www 3)
3)
7)
作业有3个部分:
- 使用您的用户名替换“3)”。这个命令工作正常:
sed -e "s/3)/$USER/" file
-replace'3)',您的ID仅在带有'www'字符串的行中。通过微小的改进,第一部分的命令也可以完成工作:
sed -e "/www/ s/3)/$USER/" file
在作业的最后部分,我必须在没有'www'的行中用我的id替换3)。有没有一种简单的方法来使用sed反向搜索字符串?到目前为止,我想出了一个想法,否定'[]'中的一组3个字符,但遗憾的是它并没有真正起作用。
sed -e "/[^/(www/)]/ s/3)/$USER/" file
答案 0 :(得分:2)
在地址后使用!
。请注意,大多数shell使用!作为历史扩展角色,所以必须正确引用:
sed -e '/www/!s/3)/'"$USER/" file