[英]How to cut a string after a specific character in unix
所以我有這個字符串:
$var=server@10.200.200.20:/home/some/directory/file
我只想提取目錄地址,這意味着我只需要在“:”字符后面的位並得到:
/home/some/directory/file
謝謝。
我需要一個通用命令,因此cut命令不會工作,因為$ var變量沒有固定的長度。
使用sed:
$ var=server@10.200.200.20:/home/some/directory/file
$ echo $var | sed 's/.*://'
/home/some/directory/file
為了完整性,使用切割
cut -d : -f 2 <<< $var
並且只使用bash:
IFS=: read a b <<< $var ; echo $b
這也可以。
echo $var | cut -f2 -d":"
這應該做的伎倆:
$ echo "$var" | awk -F':' '{print $NF}'
/home/some/directory/file
你沒有說你正在使用哪個shell。 如果它是POSIX兼容的,如Bash,那么參數擴展可以做你想要的:
參數擴展
...
${parameter#word}
刪除最小的前綴模式。
這個word
被擴展為產生一種模式。 然后參數擴展產生parameter
,前綴的最小部分與刪除的模式匹配。
換句話說,你可以寫
$var="${var#*:}"
這將刪除任何匹配*:
從$var
(即一切直到並包括第一:
)。 如果你想匹配最后一個:
,那么你可以使用##
代替#
。
這是假設要刪除的部分不包含:
對於IPv4地址,但對於IPv6地址不是)
awk -F: '{print $2}' <<< $var
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.