在bash中,我如何獲得從第一次出現字符到第二次出現相同字符的所有內容的子字符串。Bash:從第一次出現的字符到第二次出現的字符串
實施例...
輸入字符串= 「ABC-DEF-GHI」
字符= 「 - 」
希望的輸出String = 「DEF」
在bash中,我如何獲得從第一次出現字符到第二次出現相同字符的所有內容的子字符串。Bash:從第一次出現的字符到第二次出現的字符串
實施例...
輸入字符串= 「ABC-DEF-GHI」
字符= 「 - 」
希望的輸出String = 「DEF」
可能用awk與-
分隔符
echo "abc-def-ghi" | awk -F'-' '{print $2}'
-F - 要使用的字段分隔符。
{打印$ 2} - 打印第二位置
假設您有:
s="abc-def-ghi"
ch='-'
使用bash read
內置:
IFS="$ch" read -ra arr <<< $s && echo "${arr[1]}"
或者,使用正則表達式BASH:
re="$ch([^$ch]*)$ch"
[[ $s =~ -([^-]*)- ]] && echo "${BASH_REMATCH[1]}"
輸出:
def
我會用兩個參數擴展。
str="abc-def-ghi"
tmp=${str#*-} # Remove everything up to and including first -
result=${tmp%%-*} # Remove the first - and everything following it
爲什麼不直接使用削減命令是這樣的:
海峽= 「ABC-DEF-GHI」
回聲$海峽|切-f 2 -d「 - 」
,其中-d選項是分隔符和-f選項表示片段數(第一個片段號爲1,不爲0,因爲它是爲數組常見)。