一尘不染

如何使用cut为分隔符指定更多空间?

linux

有什么方法可以使用cut命令为更多空间指定字段定界符吗?(例如“ +”)?例如:在以下字符串中,我希望达到值“ 3744”,我应该说什么字段分隔符?

$ps axu | grep jboss

jboss     2574  0.0  0.0   3744  1092 ?        S    Aug17   0:00 /bin/sh /usr/java/jboss/bin/run.sh -c example.com -b 0.0.0.0

cut -d' '不是我想要的,因为它仅用于一个空间。 awk也不是我要找的东西,而是如何处理“切割”?

谢谢。


阅读 420

收藏
2020-06-03

共1个答案

一尘不染

实际上,awk正是 您应该研究的工具:

ps axu | grep '[j]boss' | awk '{print $5}'

或者您也可以grep完全放弃,因为您awk知道正则表达式:

ps axu | awk '/[j]boss/ {print $5}'

但是,如果出于某种奇怪的原因,您真的 不能 使用awk,您可以执行其他一些更简单的操作,例如首先将所有空白折叠到一个空格中:

ps axu | grep '[j]boss' | sed 's/\s\s*/ /g' | cut -d' ' -f5

grep顺便说一句,这个技巧是仅获得jboss进程而不是grep jboss一个进程的一种巧妙方法(同样适用于awk变体)。

grep过程将有文字grep [j]boss在其过程中的命令,以便将不会被捕获grep本身,角色职业,其正在[j]后面boss

这是避免| grep xyz | grep -v grep某些人使用的范例的好方法。

2020-06-03