Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在bash中查找行中的特定字符_Regex_Linux_Bash_Shell - Fatal编程技术网

Regex 在bash中查找行中的特定字符

Regex 在bash中查找行中的特定字符,regex,linux,bash,shell,Regex,Linux,Bash,Shell,是否有一种方法可以在bash中使用正则表达式从一行文本中提取特定部分 比如说 8495 pts/1 S 0:10 /opt/sbin/proc -q 10 -p /opt/etc/plugin/ -c /opt/etc/ -f 200000 -s 10000 -b 3276 如何从上面提取q参数10?。我需要q参数后面的数字原始解决方案正则表达式应该是*-q([^]*).。因此,类似于sed的s/*-q([^]*)./\1/'的东西应该可以解决这个问题。如果行存储在变量$line中: px a

是否有一种方法可以在bash中使用正则表达式从一行文本中提取特定部分

比如说

8495 pts/1 S 0:10 /opt/sbin/proc -q 10 -p /opt/etc/plugin/ -c /opt/etc/ -f 200000 -s 10000 -b 3276

如何从上面提取q参数10?。我需要q参数后面的数字

原始解决方案正则表达式应该是
*-q([^]*).
。因此,类似于
sed的s/*-q([^]*)./\1/'
的东西应该可以解决这个问题。

如果行存储在变量
$line
中:

px aux | sed -n 's/.*-q\s\([0-9]\+\).*/\1/p'
val=$(
    this_token=false 
    for word in $line; do 
        $this_token && { echo $word; break; } 
        [[ $word = "-q" ]] && this_token=true 
    done
) 
echo $val  

这是在命令行上键入的吗?或者存储在文件中?@spencer它是ps aux的输出