我試過尋找這個,並且找不到我正在尋找的東西。基於令牌的Bash字符串操作
我在Bash/Shell中包含一個包含電子郵件地址的變量。我想提取「@」符號前的所有內容並將其放入新變量中。因此[email protected]
應該只是user
。
所有字符串操作查找長度和位置。位置應該始終爲0,但我真的需要找到「@」標記。
我試過尋找這個,並且找不到我正在尋找的東西。基於令牌的Bash字符串操作
我在Bash/Shell中包含一個包含電子郵件地址的變量。我想提取「@」符號前的所有內容並將其放入新變量中。因此[email protected]
應該只是user
。
所有字符串操作查找長度和位置。位置應該始終爲0,但我真的需要找到「@」標記。
使用參數擴展:
email="[email protected]"
user=${email%%@*}
echo "$user"
${email%%@*}
由${..}
(參數擴展)與部件email
,變量; %%
,運算符從字符串的末尾刪除最長匹配;和@*
,一個匹配@的glob模式,後面跟着任何內容。
+1爲內置方法。我只是展示了另一種方式,但我也會用這種方法。 –
您可以使用bash
字符串替換(考慮到一個事實,即它是一個電子郵件地址,並不能有兩個@
跡象)
$ [email protected]
$ echo "${var/@*/}"
user
不知道爲什麼這個完全有效的答案得到DVed。 +1來補償。 –
您可以輕鬆地cut
做到這一點,通過一個分隔符分割字符串並提取得到子(或「場」)之一:
echo $ADDRESS | cut [email protected] -f1
# ^^
# delimiter extract first field
的
或者使用這裏的字符串'cut -d @ -f1 <<<「$ ADDRESS」'。參數擴展的答案將比產生一個「剪切」過程更快。 –
可能重複[?我怎麼拆就在bash分隔符的字符串(http://stackoverflow.com/questions/918886/我怎麼做 - 拆分一個字符串在一個分隔符在bash) – BMW