UNIX Sed和反向字符串搜索

时间:2017-12-10 16:11:23

标签: bash unix sed

我有一个简单的(至少我认为是)分配,我必须使用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

1 个答案:

答案 0 :(得分:2)

在地址后使用!。请注意,大多数shell使用!作为历史扩展角色,所以必须正确引用:

sed -e '/www/!s/3)/'"$USER/" file