我有以下字符串作为示例: 恩。 “放弃16 1.10 2.62 3.50”
我想将此结果传递给sed并删除所有十进制数字,以便为我留下以下内容: 恩。 “被遗弃16”
我使用以下命令:sed's / 。 // g' 这显然不起作用。
有人可以告诉我如何使用带有sed的通配符来删除与“。”相匹配的任何内容。
由于
答案 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