我想删除括号内每次出现的文字,除非它包含4位数。
源:
var="7 Days (TEXT) (some.other.text) (10%) (May contain 1000) (2003)"
期望的输出:
7 Days (2003)
非常感谢提前。
答案 0 :(得分:3)
$ echo "$var" | sed 's/([^)]*[^[:digit:]()][^)]*)//g; s/([^)]\{0,3\})//g; s/([^)]\{5,\})//g'
7 Days (2003)
工作原理:
s/([^)]*[^[:digit:]()][^)]*)//g
这将删除其中包含非数字的任何带括号的表达式。
s/([^)]\{0,3\})//g
这将删除其中包含3个或更少字符的任何带括号的表达式。
s/([^)]\{5,\})//g
这将删除其中包含5个或更多字符的任何带括号的表达式。