首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除包含字符串的所有匹配项,直到其下一个空格。

删除包含字符串的所有匹配项,直到其下一个空格。
EN

Unix & Linux用户
提问于 2019-03-25 17:21:40
回答 3查看 512关注 0票数 2

我要删除以下文本中的所有匹配:

  • 每一场比赛都从linux开始-
  • 每一场比赛都以一个空格结束。
  • (删除linux-*直到下一个空格)

示例:从本文中:

ibudev1 libudev1 libc va 7 libxatracker2 linux-泛型linux头通用linux图片泛型linux-libc-dev linux签名泛型mesa驱动程序mesa vdpau驱动程序mesa vdpau驱动程序milou

拿着这个:

ibudev1 libudev1 libudev1 I0 7 libxatracker2台面-va-a-va-驱动器台面-vdpau-司机台面-vdpau-司机milou

它将在Ubuntu上运行,所以Bash环境。

EN

回答 3

Unix & Linux用户

发布于 2019-03-25 17:34:40

代码语言:javascript
复制
sed 's/linux-[^ ]* //g'

[^ ]*匹配以下所有非空格字符,*匹配一个或多个字符

票数 1
EN

Unix & Linux用户

发布于 2019-03-25 17:35:44

代码语言:javascript
复制
perl -lpe 's/(?!<\S)linux-\S*(\s+|$)//g'

就能做到。这是linux-,前提是它前面没有一个非空格((?!<\S)),后面跟着任意数量的非空白(\S*),后面跟着一个或多个空白空间(\s+),或者行的末尾没有任何替换。

(?!<\S)负回顾检查是为了避免在包名中找到的linux-上匹配,如g++-i586-linux-gnuutil-linux-dbgsym.

请注意,我们移除包名后的空白,但不是在包名称之前。这意味着,如果行上的最后一个单词是linux-*,那么后面就会留下空白。

票数 1
EN

Unix & Linux用户

发布于 2019-03-25 21:05:03

代码语言:javascript
复制
printf '%s' "$list" | tr ' ' '\n' | grep -v '^linux-' | paste -sd " "
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/508566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档