我将以下内容存储在名为tmp.txt
的文件中user/config/jars/content-config-factory-3.2.0.0.jar
我需要将这个单词存储到变量 -
$variable=content-config-factory
我写了以下内容
while read line
do
var=$(echo $line | awk 'BEGIN{FS="\/"; OFS=" "} {print $NF}' )
var=$(echo $var | awk 'BEGIN{FS="-"; OFS=" "} {print $(1)}' )
echo $var
done < tmp.txt
这将返回结果“content”而不是“content-config-factory”。
任何人都可以告诉我如何有效地从字符串中提取两个字符之间的单词。
答案 0 :(得分:4)
awk
解决方案就像
awk -F/ '{sub("-[^-]+$", "", $NF); print $NF}
<强>测试强>
$ echo "user/config/jars/content-config-factory-3.2.0.0.jar" | awk -F/ '{sub("-[^-]+$", "", $NF); print $NF}'
content-config-factory
答案 1 :(得分:3)
您也可以尝试这种方式并获得预期结果
variable=$(sed 's:.*/\(.*\)-.*:\1:' FileName)
echo $variable
OutPut:
content-config-factory
答案 2 :(得分:2)
你可以使用grep,
grep -oP '(?<=/)[^/]*(?=-\d+\.)' file
示例:
$ var=$(echo 'user/config/jars/content-config-factory-3.2.0.0.jar' | grep -oP '(?<=/)[^/]*(?=-\d+\.)')
$ echo "$var"
content-config-factory