【问题标题】:Find a string and extract letter upfront to found string till another specifed string查找一个字符串并预先提取字母以找到字符串直到另一个指定的字符串
【发布时间】:2015-04-30 11:49:25
【问题描述】:

查找一个字符串并将字母预先提取到找到的字符串直到另一个指定的字符串

参考下面的行,我想找到字符串“任务”并预先打印字母直到下一个立即 (,) 逗号。在本例中为“192”

60132>, Exclusive Execution, 192 Task(s), Requested Resour

我已经尝试了以下给定的方式,但它不适合我,因为有时“任务”字符串会随机更改其在行中的位置。

| awk -F ',' '{ print $2}' | grep -o '[0-9]\+' 

【问题讨论】:

  • 如果你不使用python,为什么这个标签是python?

标签: regex string awk


【解决方案1】:

你可以使用re.search

>>> s="60132>, Exclusive Execution, 192 Task(s), Requested Resour"
>>> re.search(r'(\d+) (\S+)\(.*\)',s).group(0)
'192 Task(s)'
>>> re.search(r'(\d+) (\S+)\(.*\)',s).group(1)
'192'
>>> re.search(r'(\d+) (\S+)\(.*\)',s).group(2)
'Task'

Debuggex Demo

【讨论】:

  • 我没有使用 python,请您帮我使用 awk 或 sed
  • @user3742796 我不是awk 的专家。但很高兴你找到答案!:)
【解决方案2】:

由于这是单行的简单替换,因此创建了一个作业 sed:

$ sed -r 's/.*,[[:space:]]*([^,[:space:]]+)[[:space:]]*Task.*/\1/' file
192

您可以在 GNU awk 中使用 gensub() 或任何 awk 中使用 match()+substr() 和/或 [g]sub()s。

【讨论】:

  • 2 月 19 日星期四 16:10:07:从主机 提交,CWD /home/iit muser6/cfs.v2.1.6/HINDCAST/MAY_HINDCAST/hind_20060511_00>,输出文件 ,错误文件 ,独占执行,192 个任务,请求的资源 ,请求的网络 ;运行限制
  • 您发表该评论的意图是什么?你想告诉我们什么?
猜你喜欢
  • 1970-01-01
  • 2018-10-03
  • 2020-02-02
  • 1970-01-01
  • 2023-04-06
  • 2021-09-26
  • 1970-01-01
  • 2022-06-17
相关资源
最近更新 更多