在bash中对特定内容拆分字符串

在bash中对特定内容拆分字符串,bash,Bash,我有一根基于冒号的线。我现在有一个字符串,格式如下: 周一日期、年生日(输入) 我能做些什么,这样我就可以: 星期一,没有生日的一年? (或者换句话说,期望的输出:) 澄清:本例中的生日字面上是字符串“生日” 我知道这个网站上的各种帖子都告诉你如何基于分隔符拆分字符串,但我不知道如何基于特定的单词/字符串拆分字符串,因此在这里找不到sed: var=$(sed 's/ Birthday//'<<<'mon date, year Birthday') echo $var 所以我

我有一根基于冒号的线。我现在有一个字符串,格式如下:
周一日期、年生日
(输入)

我能做些什么,这样我就可以: 星期一,没有生日的一年? (或者换句话说,期望的输出:)

澄清:本例中的生日字面上是字符串“生日”

我知道这个网站上的各种帖子都告诉你如何基于分隔符拆分字符串,但我不知道如何基于特定的单词/字符串拆分字符串,因此在这里找不到sed:

var=$(sed 's/ Birthday//'<<<'mon date, year Birthday')
echo $var

所以我在这里使用cut。如果这对你有帮助,请告诉我

val=$(echo "mon date, year Birthday" | cut -d" " -f1,2,3)
猛击

orig="mon date, year Birthday"
val="${orig%% Birthday}"

echo $val
mon date, year

我们在这里做的不是完全拆分,而是“剥离”固定后缀。bash内置了这个功能。

添加输入和所需的输出。所以您只想删除
生日
?这与拆分有什么关系?@melpomene是的,我不知道该怎么做,所以我只是说拆分
var=“${var%birth}”
@tso我已经添加了它,我该如何将它存储到变量中?
cut
不是内置在shell中的。@melpomene,谢谢,我已经通过删除该语句更新了我的答案。请您删除-ve,如果是因为该声明,我们将非常感谢您。
val=$(echo "mon date, year Birthday" | cut -d" " -f1,2,3)
orig="mon date, year Birthday"
val="${orig%% Birthday}"

echo $val
mon date, year