2015-11-24 105 views
2

文件路徑我有一個包含這種格式的字符串文件:提取剛剛從字符串

MD5 (TestImages/IMG_0627.JPG) = 6ed611b3e777c5f7b729fa2f2412d656 

我試圖找出一種方法來提取文件路徑,這樣我就得到這樣一個字符串:

TestImages/IMG_0627.JPG 

對於我的劇本的不同部分,我使用此代碼之前和之後括號去除一切,當然我可以做同樣的事情,但我敢肯定有一個更好的辦法?

shortFile=${line#*MD5 } 
shortFile=${shortFile%%)*} 

任何人有任何建議嗎?

+0

如何使用sed? – jia103

回答

2

您可以使用sed,但是它具有啓動新過程的開銷。

echo $line | sed -r 's/MD5 \((.*)\).*/\1/' 
+0

運行'sed'一次:'sed -r's/MD5 \((。*)\)。*/\ 1 /'' – SergA

1
sed -e 's/^.*(\([^)]*\)).*$/\1/' < infile.txt 
+0

這不起作用。你試過了嗎? – miken32

+0

我當時沒有;我現在已經做了更新以糾正它。 – jia103

1

與切另一種方式可以是:

echo $line|cut -d "(" -f2|cut -d ")" -f1 
2

只是拋出一個非sed的回答到樁。 (也稍微便宜一些,因爲它避免了管道和子殼。)

awk -F '[()]' '{print $2}' <<<"$line" 

認爲子展開選項是如果它你需要什麼是合理的。 (雖然看起來你在第一次擴展中錯過了(。)