如何使用sed从字符串中删除十进制数?

时间:2011-06-28 20:20:58

标签: linux unix sed wildcard

我有以下字符串作为示例: 恩。 “放弃16 1.10 2.62 3.50”

我想将此结果传递给sed并删除所有十进制数字,以便为我留下以下内容: 恩。 “被遗弃16”

我使用以下命令:sed's / // g' 这显然不起作用。

有人可以告诉我如何使用带有sed的通配符来删除与“”相匹配的任何内容。

由于

3 个答案:

答案 0 :(得分:5)

你还没有说过你想用空白做什么,但是

怎么样
sed -e 's/[0-9]*\.[0-9]*//g' -e 's/ *$//'

答案 1 :(得分:1)

这对awk来说会更容易,至少对我而言

echo "Abandoned 16 1.10 2.62 3.50" | awk '{print $1FS$2}'

但随后是随机数字列表?

如果是这样,这也有效

echo "Abandoned 16 1.10 2.62 3.50" | sed -r 's/\s([0-9]+)\.([0-9]+)//g'

请注意\s捕获空格,并保存小数点前后的数字,因此如果您想保留它们并对它们执行某些操作,则可以使用\1\2来访问它们。尊重Abandoned [5spaces*] 16

为什么要抓住白色的sapce?好吧想象一下,如果16在你的例子中以3.50之后出现,那么你将返回

<textarea> *我只能在此{{1}}

中插入一个空格

答案 2 :(得分:0)

投入一个awk解决方案,该解决方案循环输入并跳过包含句点的条目

{
     printf("%s ", $1)
     for(i=2;i<NF;i++) {
         if ($i !~ /\./) {
             printf( " %s ", $i)
         }
     }
}

$ echo Abandoned 16 1.10 2.62 3.50 | awk -f f.awk 
Abandoned  16