2016-04-29 76 views

回答

0

如果我正確地得到你的意圖,你需要單引號之間的所有文本;您可以使用此:

$ sed -r "s/^.*'([^']*)'.*$/\"\1\"/g" <<< "\" File: 'space folder' \"" 
"space folder" 
$ 

EDIT1:解釋

command <<< string =><<<這裏表示字符串,它是你傳遞一個字符串命令。

我們最終的字符串是這樣的:

$ echo -e "\" File: 'space folder' \"" 
" File: 'space folder' " 
$ 

,因爲我們的字符串中包含單引號,我們使用雙引號sed命令:

-r開關啓用擴展正則表達式

"s/^.*'([^']*)'.*$/\"\1\"/g"

上面的命令用整個行代替之間的文本單引號。

正則表達式擊穿:

  • ^比賽開始線的

  • .*匹配0個或多個字符

  • '匹配一個單引號

  • ([^']*) matche秒0或多個字符不屬於單引號 並記住它作爲反向引用編號\1

  • '匹配單引號的拍攝組

  • .*匹配0或多個字符

  • $比賽行尾

+0

你能解釋一點嗎? –

+0

@ J.K.Mahapatra補充說明 – ritesht93

+0

非常感謝。它真的有幫助! –