在unix中从字符串中提取内容
当我跑步时在unix中从字符串中提取内容,unix,sh,Unix,Sh,当我跑步时 ps aux | grep dexter | grep ruby | grep -v grep 这就是我得到的 dexter 3285 0.0 0.0 31652 5356 ? S 00:01 0:01 ruby /home/dexter/script.ruby 我有一个字符串中的整个输出,比如 s= dexter 3285 0.0 0.0 31652 5356 ? S 00:01 0:01 ruby /home/dexter/script.rub
ps aux | grep dexter | grep ruby | grep -v grep
这就是我得到的
dexter 3285 0.0 0.0 31652 5356 ? S 00:01 0:01 ruby /home/dexter/script.ruby
我有一个字符串中的整个输出,比如
s= dexter 3285 0.0 0.0 31652 5356 ? S 00:01 0:01 ruby /home/dexter/script.ruby
我需要从字符串中提取/home/dexter/script.ruby。如何在unix中实现这一点?使用awk
ps aux | grep dexter | grep ruby | grep -v grep | awk '{print $11}'
你可以用
谢谢你的帮助,但我需要一些awk的替代品。awk的输出不会以某种方式传输到我的脚本中。特别是因为您无论如何都调用了awk,所以可以对其进行重构
ps aux | awk'/[d]exter/&/[r]uby/{print$11}'
。使用命令替换捕获结果:s=$(ps aux | awk'/[d]exter/&/[r]uby/{print$11})
将结果放在$s
中。不过,在示例输出中,您想要的字符串似乎是$12
。为了提高准确性,您可以说awk'$1==“dexter”&&$11==“ruby”{print$12}”
Unix是一个操作系统。您的问题与Bourne shell编程语言有关,即sh
。我添加了相应的标记。
echo '/'${s#*\/}