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。