如何使用sed在字符串的第二个句点后删除

时间:2018-09-22 09:07:34

标签: sed

在我的脚本中,有一个可能的版本号:15.03.2设置为变量$STRING。这些数字总是在变化。我想将其简化为:15.03(或下一次将要使用的任何东西)。

如何使用.删除第二个sed之后的所有内容?

类似的东西:

$(echo "$STRING" | sed "s/\.^$\.//")

(我不知道^$和其他人做什么,但是它们看起来很相关,所以我猜到了。)

3 个答案:

答案 0 :(得分:3)

我认为这里最好的工具是剪裁

echo '15.03.2' | cut -d . -f -2

答案 1 :(得分:1)

这可能对您有用(GNU sed):

sed 's/\.[^.]*//2g' file

删除第二个或更多的句点,后跟零个或非句点字符。

答案 2 :(得分:0)

$ echo '15.03.2' | sed 's/\([^.]*\.[^.]*\)\..*/\1/'
15.03

通常跳过N个时段:

$ echo '15.03.2.3.4.5' | sed -E 's/(([^.]*\.){2}[^.]*)\..*/\1/'
15.03.2
$ echo '15.03.2.3.4.5' | sed -E 's/(([^.]*\.){3}[^.]*)\..*/\1/'
15.03.2.3
$ echo '15.03.2.3.4.5' | sed -E 's/(([^.]*\.){4}[^.]*)\..*/\1/'
15.03.2.3.4