是否有方法從bash中的正則表達式的文本行中提取特定部分。在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參數從上方?我需要q參數後的數字
是否有方法從bash中的正則表達式的文本行中提取特定部分。在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參數從上方?我需要q參數後的數字
px aux | sed -n 's/.*-q\s\([0-9]\+\).*/\1/p'
天真的解決方案正則表達式將是.*-q ([^ ]*) .*
。所以,像sed 's/.*-q ([^ ]*) .*/\1/'
應該做的伎倆。
如果該行被存儲在變量$line
:
val=$(
this_token=false
for word in $line; do
$this_token && { echo $word; break; }
[[ $word = "-q" ]] && this_token=true
done
)
echo $val
難道這鍵入的命令行?或者存儲在一個文件中? – 2012-07-10 12:26:39
@spencer它是ps aux的輸出 – barp 2012-07-10 12:31:33