Bash 如何在两个'';
我正在编写一个脚本,该脚本接收以下格式的字符串:Bash 如何在两个'';,bash,Bash,我正在编写一个脚本,该脚本接收以下格式的字符串: ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit 我需要介于“”之间的子字符串,so/dev/xenlvm/backups 我知道我可以使用##*运算符和%%,但我总是将其与字符[]一起使用。如果分隔符为“”,如何指定它 tmp=${var##*[} echo "${tmp%%]*}" 非常感谢;) 您可以使用: 剪切-剪切文件每行的选定字段 单引号是此处的自然分隔符,因此
ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit
我需要介于“”之间的子字符串,so/dev/xenlvm/backups
我知道我可以使用##*运算符和%%,但我总是将其与字符[]一起使用。如果分隔符为“”,如何指定它
tmp=${var##*[}
echo "${tmp%%]*}"
非常感谢;) 您可以使用:
剪切-剪切文件每行的选定字段
单引号是此处的自然分隔符,因此如下所示:
path=$(echo $stuff | cut -f2 -d"'")
当然,这假设您不必处理嵌套或转义单引号。您可以使用:
剪切-剪切文件每行的选定字段
单引号是此处的自然分隔符,因此如下所示:
path=$(echo $stuff | cut -f2 -d"'")
当然,这假设您不必处理嵌套或转义单引号。另一种方法是使用
read
shell内置。这些通常比执行外部命令更快
bash-4.2$ tmp="ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit"
bash-4.2$ IFS="'" read path path blah <<< "$tmp"
bash-4.2$ echo "$path"
/dev/xenlvm/backups
bash-4.2$tmp=“ACTIVE'/dev/xenlvm/backups'[20.00 GiB]继承”
bash-4.2$IFS=“””读取路径blah另一种选择是使用read
shell内置。这些通常比执行外部命令更快
bash-4.2$ tmp="ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit"
bash-4.2$ IFS="'" read path path blah <<< "$tmp"
bash-4.2$ echo "$path"
/dev/xenlvm/backups
bash-4.2$tmp=“ACTIVE'/dev/xenlvm/backups'[20.00 GiB]继承”
bash-4.2$IFS=“””读取路径blah是否将其转义
$ tmp="ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit"
$ echo $tmp
ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit
$ tmp="${tmp#*\'}"
$ echo $tmp
/dev/xenlvm/backups' [20.00 GiB] inherit
$ tmp="${tmp%\'*}"
$ echo $tmp
/dev/xenlvm/backups
逃避它
$ tmp="ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit"
$ echo $tmp
ACTIVE '/dev/xenlvm/backups' [20.00 GiB] inherit
$ tmp="${tmp#*\'}"
$ echo $tmp
/dev/xenlvm/backups' [20.00 GiB] inherit
$ tmp="${tmp%\'*}"
$ echo $tmp
/dev/xenlvm/backups
如果字符串的变化大于原始描述,则需要正则表达式。我会用像这样的东西
echo $line_of_file | sed -n -e "/ACTIVE/ s|.*'\(.*\)'.*|\1|p"
如果字符串的变化大于原始描述,则需要正则表达式。我会用像这样的东西
echo $line_of_file | sed -n -e "/ACTIVE/ s|.*'\(.*\)'.*|\1|p"
您的选项非常有效,因此因为分隔符是“我不能使用bash技巧”。谢谢你抽出时间;)@xavierds:可能有一个${}
技巧可以做到这一点,但是/usr/bin
中的所有内容也是shell脚本的一部分,因此没有理由不使用它。“它有效”通常是一个相当不错的起点:)我明白了,我将遵循这个;)。很抱歉,因为我是新来的,所以不能肯定地投你的票,祝你一周愉快;)您的选项非常有效,因此因为分隔符是“我不能使用bash技巧”。谢谢你抽出时间;)@xavierds:可能有一个${}
技巧可以做到这一点,但是/usr/bin
中的所有内容也是shell脚本的一部分,因此没有理由不使用它。“它有效”通常是一个相当不错的起点:)我明白了,我将遵循这个;)。很抱歉,因为我是新来的,所以不能肯定地投你的票,祝你一周愉快;)