从字符串bash中删除一个单词

Cip*_*tea 5 bash

我有字符串

file="this-is-a-{test}file" 
Run Code Online (Sandbox Code Playgroud)

我想{test}从这个字符串中删除.我用了

echo $file | sed 's/[{][^}]*//'  
Run Code Online (Sandbox Code Playgroud)

但是这让我感动了

this-is-a-}file
Run Code Online (Sandbox Code Playgroud)

我怎么能删除}

谢谢

Shi*_*nok 9

也可以尝试这个bash only oneliner作为替代方案:

s="this-is-a-{test}file"
echo ${s/\{test\}/}
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 6

您可以使用sed正确的正则表达式:

s="this-is-a-{test}file"
sed 's/{[^}]*}//' <<< "$s"
this-is-a-file
Run Code Online (Sandbox Code Playgroud)

或者这个awk:

awk -F '{[^}]*}' '{print $1 $2}' <<< "$s"
this-is-a-file
Run Code Online (Sandbox Code Playgroud)

  • @CiprianVintea表示“谢谢”的首选方式是接受对您提出的任何问题的最有帮助的答案(单击绿色的对号)(这也会增加您的声誉),并通过投票给有帮助的答案(如果您愿意拥有15个以上的声誉)。请阅读[导览],并祝您好运。 (2认同)