regex - 在 bash 中修剪变量

标签 regex string bash sed

<分区>

我需要将变量 wordpress.tar.gz 修剪为 wordpress

我试过:

#!/bin/bash
dir=wordpress.tar.gz
echo $dir
RELEASE=$($dir | sed "s/-.tar.gz//")
echo ${RELEASE}

最佳答案

你可以使用字符串扩展:

RELEASE="${dir%%.*}"

参见 online Bash demo :

dir=wordpress.tar.gz
RELEASE="${dir%%.*}"
echo "$RELEASE"
# => wordpress

${dir%%.*} 部分从末尾(由于 %%)删除最长的文本 block ,直到第一个点字符。

如果你想使用sed,你可以删除所有以第一个点开始(包括)的字符串:

RELEASE="$(sed 's/\..*//' <<< $dir)"

在这里,\..* 匹配一个点,然后匹配字符串末尾的任何零个或多个字符,并且匹配被替换为空字符串(被删除),因为 RHS 是空的.

关于regex - 在 bash 中修剪变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63969452/

相关文章:

javascript - 如何使用 .match javascript 方法来搜索数组和字符串?

执行文件时的 Linux 命令 &>

javascript - Google Places Autocomplete,如何处理地址中的单元号

C 使用 sscanf 解析 URL 参数 GET/POST 为 JSON

regex - 使用 sed 和正则表达式从字符串中提取数字

java - 在 Java 中重复一个字符串——类似于 Python 的一行简单性

macos - 使用 OS X bash 将剪贴板中的 sha1 校验和与本地文件的 sha1 进行比较的最快方法

bash - Shell脚本通用模板

regex - Groovy 正则表达式和通配符权限

regex - VBA:子匹配正则表达式