Answers:
grep -Po '^[^ ]+[ ]+\K[^ ]+' file
如果您要在像下面这样的shell脚本中更改为“ root”用户,那么当诸如awk之类的Linux实用程序无法用于数据提取时,以上一项非常有用。
sudo -i <<EOF
ps aux | grep -E -i "[l]js" |grep -v "javaagent" | awk '{print $2}' # So awk won't work here
ps aux | grep -E -i "[l]js" | grep -v "javaagent" | grep -Po '^[^ ]+[ ]+\K[^ ]+'
EOF
awk
您的示例中“ 不起作用” 的唯一原因是未在此处引用本文,这意味着$2
外壳程序会将其扩展到第二个位置参数。该解决方案可能不是切换到grep
命令,但要么逃避$
的$2
作为\$2
或简单地通过引用整个文档<<'EOF'
代替<<EOF
。另请注意,示例中的任务更容易由来执行pgrep
。
cat ... |
很少是必要的。多数Unix命令都cut
将一个或多个输入文件作为参数,例如cut -d" " -f5 columns.txt
。