2017-03-27 20 views
-1

讓我們有一個字符串:./dfsgfd/dfs/as/ssss如何刪除(或替換)2個選定字符之間的所有字符。桑達。 Bash

我需要得到這個:|-----ssss

所以我寫使用sed腳本:SED -r -e 's/.\//|--/;s/\//-/g;s/-[^\-]*-/--/g;'

通過這個正則表達式sed -r -e 's/.\//|--/;s/\//-/g;'我:|--dfsgfd-dfs-as-ssss

現在我需要刪除 - 和 - 之間的所有字符。我怎樣才能做到這一點?這個正則表達式做得不好:s/-[^\-]*-/--/g;

謝謝!

+1

您的要求就是讓'| ----- ssss'作爲輸出 - 對嗎?我們在哪裏有5個「 - 」,後面跟着管道符號。有沒有打印這五個「 - 」的標準? –

+1

你真的不需要爲此''回聲'sed' | ----- $ {s ## * /}「'其中'$ s'是你的字符串... –

+0

你是在找像這樣 - 'echo「./dfsgfd/dfs/as/ssss"|sed -r -e's /.(.*)\// | ----- /'' output'| - ---- ssss' –

回答

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 
相關問題