找到一个字符串并预先提取字母以找到字符串直到另一个指定的字符串
Find a string and extract letter upfront to found string till another specifed string
查找字符串并提取前面的字母以找到字符串直到另一个指定的字符串
参考下一行,我想找到字符串 'Task' 并在前面打印字母直到下一个立即数 (,) 逗号。在这种情况下 '192'
60132>, Exclusive Execution, 192 Task(s), Requested Resour
我试过下面给定的方法,但它不适合我,因为有时 'Task' 字符串会随机改变它在行中的位置。
| awk -F ',' '{ print }' | grep -o '[0-9]\+'
你可以使用 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'
由于这是单行上的简单替换,因此创建了一个作业 sed 来完成:
$ sed -r 's/.*,[[:space:]]*([^,[:space:]]+)[[:space:]]*Task.*//' file
192
您可以在 GNU awk 中使用 gensub() 或任何使用 match()+substr() 的 awk 执行相同的操作 and/or [g]sub()s.
查找字符串并提取前面的字母以找到字符串直到另一个指定的字符串
参考下一行,我想找到字符串 'Task' 并在前面打印字母直到下一个立即数 (,) 逗号。在这种情况下 '192'
60132>, Exclusive Execution, 192 Task(s), Requested Resour
我试过下面给定的方法,但它不适合我,因为有时 'Task' 字符串会随机改变它在行中的位置。
| awk -F ',' '{ print }' | grep -o '[0-9]\+'
你可以使用 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'
由于这是单行上的简单替换,因此创建了一个作业 sed 来完成:
$ sed -r 's/.*,[[:space:]]*([^,[:space:]]+)[[:space:]]*Task.*//' file
192
您可以在 GNU awk 中使用 gensub() 或任何使用 match()+substr() 的 awk 执行相同的操作 and/or [g]sub()s.