概述
我有一个这样的字符串: /var/cpanel/users/joebloggs:DNS9=domain.com 我需要从这个字符串中提取用户名:joebloggs,并将其存储在一个变量中 字符串的格式将始终是相同的,除了joebloggs和domain.com所以我认为字符串可以拆分两次使用“剪切”? 第一次拆分将使用:将我们分开的字符串,我们将存储第一部分在一个varibale传递给第二个拆分功
我有一个这样的字符串:
/var/cpanel/users/joebloggs:DNS9=domain.com
我需要从这个字符串中提取用户名:joebloggs,并将其存储在一个变量中
字符串的格式将始终是相同的,除了joebloggs和domain.com所以我认为字符串可以拆分两次使用“剪切”?
第一次拆分将使用:将我们分开的字符串,我们将存储第一部分在一个varibale传递给第二个拆分功能。
使用参数扩展在bash中从此字符串中提取joebloggs,而不需要任何额外的进程…
MYVAR="/var/cpanel/users/joebloggs:DNS9=domain.com" name=${MYVAR%:*} # retain the part before the colon name=${name##*/} # retain the part after the last slash echo $name
不依赖于joebloggs在路径中的特定深度。
如果你想使用grep:
echo MYVAR | grep -oE '/[^/]+:' | cut -c2- | rev | cut -c2- | rev
概要
${MYVAR#pattern} # delete shortest match of pattern from the beginning ${MYVAR##pattern} # delete longest match of pattern from the beginning ${MYVAR%pattern} # delete shortest match of pattern from the end ${MYVAR%%pattern} # delete longest match of pattern from the end
所以#表示从开始匹配(想到注释行),%表示从结尾。一个实例意味着最短,两个实例意味着最长。
您还可以使用以下代替替换特定字符串或模式:
${MYVAR/search/replace}
该模式与文件名匹配格式相同,因此*(任何字符)是常见的,后面紧跟着/或的特殊符号。
例子:
MYVAR="users/joebloggs/domain.com"
echo ${MYVAR##*/} domain.com
echo ${MYVAR%/*} users/joebloggs
echo ${MYVAR##*.} com
注意:要执行两个操作,您不能组合它们,但必须分配到一个中间变量。所以得到没有路径或扩展名的文件名:
name=${MYVAR##*/} # remove part before last slash echo ${name%.*} # from the new var remove the part after the last period domain
总结
以上是编程之家为你收集整理的使用bash/cut/split提取字符串的一部分全部内容,希望文章能够帮你解决使用bash/cut/split提取字符串的一部分所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。