如何删除(或替换)2个所选字符之间的所有字符。桑达。巴什

时间:2017-03-27 20:18:53

标签: bash unix sed

我们有一个字符串:|-----ssss

我需要这样做:'s/.\//|--/;s/\//-/g;s/-[^\-]*-/--/g;'

所以我用sed写了一个脚本:sed -r -e sed -r -e 's/.\//|--/;s/\//-/g;'

通过此正则表达式|--dfsgfd-dfs-as-ssss ,我得到了:s/-[^\-]*-/--/g;

现在我需要删除 - 和 - 之间的所有字符。我怎样才能做到这一点?这个正则表达式做得不好:{{1}}。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确:

  • 您想要使用/
  • 替换每个-
  • 删除字符之间的所有字符,但是 -
  • |-
  • 作为前缀

许多可能的解决方案之一

str='./dfsgfd/dfs/as/ssss'
out="|-$( sed 's:[^/]::g;s:/:-:g' <<<"${str%/*}/" )${str##*/}"
echo "$out"

输出

|-----ssss

来自:str='./a/b/c/d/e/f/g/i/jjj'

|----------jjj