使用带正则表达式的 Sed 将结果保存到变量中
Using Sed with regular expression to save results into a variable
我想做的是将用户输入作为字符串并解析字符串的一部分。我想将正则表达式的结果保存到一个新变量中。这是我到目前为止所拥有的。
#!/bin/bash
downloadUrl=""
pythonFile=echo $downloadUrl | sed '/Python-[\d+.]+tgz/'
echo "$downloadUrl"
echo "$pythonFile"
这是我的结果。
sed: 1: "/Python-[\d+.]+tgz/": command expected
您忘记了 运行 $()
中的命令来获取命令替换。使用:
pythonFile=$(echo $downloadUrl | sed '/Python-[\d+.]+tgz/')
有关详细信息,请参阅 the manual。
sed '/Python-[\d+.]+tgz/'
是不正确的,因为您需要像 p
这样的 sed 命令,而且无论如何它只是搜索而不是真正提取输入文本的一部分。
您可以使用grep -oP
pythonFile$(grep -oP '/Python-[\d+.]+tgz/' <<< "$downloadUrl")
或没有-P
pythonFile$(grep -o '/Python-[0-9+.]\+tgz/' <<< "$downloadUrl")
我想做的是将用户输入作为字符串并解析字符串的一部分。我想将正则表达式的结果保存到一个新变量中。这是我到目前为止所拥有的。
#!/bin/bash
downloadUrl=""
pythonFile=echo $downloadUrl | sed '/Python-[\d+.]+tgz/'
echo "$downloadUrl"
echo "$pythonFile"
这是我的结果。
sed: 1: "/Python-[\d+.]+tgz/": command expected
您忘记了 运行 $()
中的命令来获取命令替换。使用:
pythonFile=$(echo $downloadUrl | sed '/Python-[\d+.]+tgz/')
有关详细信息,请参阅 the manual。
sed '/Python-[\d+.]+tgz/'
是不正确的,因为您需要像 p
这样的 sed 命令,而且无论如何它只是搜索而不是真正提取输入文本的一部分。
您可以使用grep -oP
pythonFile$(grep -oP '/Python-[\d+.]+tgz/' <<< "$downloadUrl")
或没有-P
pythonFile$(grep -o '/Python-[0-9+.]\+tgz/' <<< "$downloadUrl")