如何编写 sed 脚本来删除一行中的数字?

5 linux scripting sed shell-script

示例文件

a.b.gg3d 0000000001 0000000001 y
a.b.112a 0000000000 0000000001 y
a.b.gg3s 0000000001 0000000001 y
a.b.1111 0000000000 0000000001 m
Run Code Online (Sandbox Code Playgroud)

我有一个文件,其中包含大约三千行独特的行,类似于上面的示例。我想使用 sed 从每一行中删除“xxxxxxxxxx xxxxxxxxxx”数字。使用上面的示例,我希望 sed 脚本产生以下输出:

a.b.gg3d y
a.b.112a y
a.b.gg3s y
a.b.1111 m
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?是否有一系列命令可以告诉 sed 类似“删除第一个空格后的所有数字,但保留最后一个字符”之类的内容?

gle*_*man 4

给定此输入,您希望保留第一个和最后一个字段。使用 awk 非常简单:

awk '{print $1, $NF}' filename
Run Code Online (Sandbox Code Playgroud)

使用 sed,这将替换所有空格分隔的仅数字单词:

sed ':a; s/ [[:digit:]]\+ / /; ta'
Run Code Online (Sandbox Code Playgroud)