我有这个字符串:
data="week 50; data; data; data; data"
我想用sed删除它的周部分, 所以我会得到:数据;数据;数据;数据 我想出了这个,但显然不起作用,任何想法为什么? 错误的规则在哪里?
代码:
echo ${data} | sed '/%week.*%;/s/%week.*%;//'
Chers
答案 0 :(得分:5)
这应该足够了:
echo ${data} | sed 's/week[^;]*;//'
输出:
data; data; data; data
这匹配week
加上up-to并包括下一个分号([^;]*;
)并将其删除。
如果您还想删除无关的空间,请执行以下操作:
echo ${data} | sed 's/week[^;]*; *//'
答案 1 :(得分:1)
你真的想要删除包含以“week”开头的文本的以分号分隔的字段,还是只是想要删除第一个字段?考虑:
$ echo "week 50; data; data; data; data" | cut -d\; -f2-
data; data; data; data
$ echo "week 50; data; data; data; data" | sed 's/[^;]*;//'
data; data; data; data