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