使用带正则表达式的Sed将结果保存到变量中

时间:2015-01-29 06:59:39

标签: bash

我尝试做的是将用户输入作为字符串并解析字符串的一部分。我的正则表达式的结果我想保存到一个新的变量。这是我到目前为止所拥有的。

#!/bin/bash
downloadUrl="$1"
pythonFile=echo $downloadUrl | sed '/Python-[\d+.]+tgz/'
echo "$downloadUrl"
echo "$pythonFile"

这是我的结果。

sed: 1: "/Python-[\d+.]+tgz/": command expected

2 个答案:

答案 0 :(得分:1)

您忘记在$()中运行命令以获取命令替换。使用:

pythonFile=$(echo $downloadUrl | sed '/Python-[\d+.]+tgz/')

有关详细信息,请参阅the manual

答案 1 :(得分:0)

sed '/Python-[\d+.]+tgz/'不正确,因为你需要像p这样的sed命令,无论如何它只是搜索不是真正提取部分输入文本。

您可以使用grep -oP

pythonFile$(grep -oP '/Python-[\d+.]+tgz/' <<< "$downloadUrl")

或没有-P

pythonFile$(grep -o '/Python-[0-9+.]\+tgz/' <<< "$downloadUrl")