2

我有这个字符串:

 data="week 50; data; data; data; data"

我想通过使用 sed 从其中删除星期部分,以便我得到:数据;数据; 数据; 数据我想出了这个但显然不起作用,知道为什么吗?错误的规则在哪里?

代码:

echo ${data} | sed '/%week.*%;/s/%week.*%;//'

雪儿

4

2 回答 2

5

这应该足够了:

echo ${data} | sed 's/week[^;]*;//'

输出:

data; data; data; data

这匹配weekplus up to 并包括下一个分号 ( [^;]*;) 并将其删除。

如果您还想删除多余的空间,请执行以下操作:

 echo ${data} | sed 's/week[^;]*; *//'
于 2012-12-18T14:52:39.417 回答
1

您真的要删除包含以“周”开头的文本的分号分隔字段,还是真的只想删除第一个字段?考虑:

$ 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
于 2012-12-19T13:16:20.263 回答