正则表达式在特定字符处停止

标签 regex linux bash grep

我的输出看起来像这样:

 16    1VirtualMachine1         [aljkas] some_data.blah
 17       Virtual Machine 1        [jklaj] some_more_data.blah
 23    Virtu al Machin e 1      [adwv] some_more_data.blah


 12     Virtual_Machine one      [awa] some_more_data.blah
 11    VirtualMa chineone       [kladfsa] some_more_data.blah

我只想获取空格之间的内容,直到 [

所以输出只会返回:

1VirtualMachine1
Virtual Machine 1
Virtu al Machin e 1
Virtual_Machine one
VirtualMa chineone

我的正则表达式看起来像这样(但没有按照我的想法去做):

a_cmd | grep -o -E '[[:space:]]{2,}[a-zA-Z0-9\.,_()]+.+[[:space:]]{2,}'

这只会返回所有原始输出。我做错了什么?

最佳答案

使用sed:

sed 's/[0-9 ]* \(.*\)\[.*/\1/;/^$/d' your.file

关于正则表达式在特定字符处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466953/

相关文章:

php - php 中的 GST 号码验证

linux - 任何人给我一个 SORT 的解决方案

bash FFMPEG - ".mp4 no such file or directory"

sql - 一次将多条记录存储到数据库表中,然后检查是否有记录丢失

bash - 某些 bash 脚本中使用的 'function' 关键字是什么?

ruby - Sinatra 路由的必需和可选参数

regex - 使用 nginx 重定向捕获的正则表达式组

regex - 如何使用 sed 查找以 AAA 开头但不以 BBB 结尾的行

linux - 真正从 Bash 中的列表中获取输入时

c - 获取用户输入时出现段错误?