如何使用sed删除最后一个点上的所有字符?

时间:2014-03-28 06:59:19

标签: sed

如何使用sed删除最后一个点上的所有字符?

e.g:

ns:base.cocktails.cocktail_garnish
ns:user.maport.cocktail.cocktail_recipe
ns:base.cocktails.cocktail_drinkware
ns:user.pjf.default_domain.chicken_breed
ns:user.radiusrs.default_domain.astrological_sign
ns:base.disaster2.type_of_tornado

我想得到:

ns:base.cocktails
ns:user.maport
ns:base.cocktails
ns:user.pjf.default_domain
ns:user.radiusrs.default_domain
ns:base.disaster2

3 个答案:

答案 0 :(得分:2)

那是基本的。

sed 's/\.[^.]*$//' file

答案 1 :(得分:1)

您可以使用awk

awk 'BEGIN {OFS=FS="."} NF--' file

sed对这项工作更好。


使用sed正则表达式:

awk '{sub(/\.[^.]*$/,"")}1' file

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed 's/\(.*\)\..*/\1/' file

使用贪婪查找最后.并在此后删除。