所以我有這個字符串:如何在UNIX
[email protected]:/home/some/directory/file
我只是想解壓目錄地址這意味着我只希望後位「:」字符,並得到:
/home/some/directory/file
謝謝。
我需要一個通用的命令,所以cut命令不會工作,因爲$ var變量沒有固定的長度。
所以我有這個字符串:如何在UNIX
[email protected]:/home/some/directory/file
我只是想解壓目錄地址這意味着我只希望後位「:」字符,並得到:
/home/some/directory/file
謝謝。
我需要一個通用的命令,所以cut命令不會工作,因爲$ var變量沒有固定的長度。
使用SED:
$ [email protected]:/home/some/directory/file
$ echo $var | sed 's/.*://'
/home/some/directory/file
如果原始字符串有多個':'字符,該怎麼辦?像'[email protected]一樣。20:管理員:/家庭/一些/目錄/ file'。我們怎麼能只獲得最後一個字段(路徑數據)? –
@SopalajodeArrierez,給定的命令將工作。請參閱http://asciinema.org/a/16807(因爲'。*'會盡可能匹配:貪婪) – falsetru
這應該做的伎倆:
$ echo "$var" | awk -F':' '{print $NF}'
/home/some/directory/file
awk -F: '{print $2}' <<< $var
爲了完整起見,使用切
cut -d : -f 2 <<< $var
而且只使用bash下
IFS=: read a b <<< $var ; echo $b
這可能會爲你工作:
echo ${var#*:}
這也將這樣做。
echo $var | cut -f2 -d":"
你不說你正在使用哪個shell。如果它是一個POSIX兼容的,如猛砸,然後參數擴展可以做你想做什麼:
參數擴展
...
${parameter#word}
刪除最小匹配模式。
word
已擴展以生成模式。然後參數展開產生parameter
,其中前綴的最小部分與被刪除的模式相匹配。
換句話說,你可以寫
$var="${var#*:}"
這將刪除任何匹配從$var
*:
(即一切直到幷包括第一:
)。如果您想匹配最後的:
,那麼您可以使用##
代替#
。
這一切都是假設的部分刪除不包含:
(真正的IPv4地址,但不能使用IPv6地址)
這可能早就很容易通過谷歌找到,因爲它是一種基本的東西爲您列出的工具。 :-) – Qben