有什么方法可以使用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也不是我要找的东西,而是如何处理“切割”?
cut -d' '
awk
谢谢。
实际上,awk这 正是 您应该研究的工具:
ps axu | grep '[j]boss' | awk '{print $5}'
或者您也可以grep完全放弃,因为您awk知道正则表达式:
grep
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变体)。
jboss
grep jboss
该grep过程将有文字grep [j]boss在其过程中的命令,以便将不会被捕获grep本身,角色职业,其正在[j]后面boss。
grep [j]boss
[j]
boss
这是避免| grep xyz | grep -v grep某些人使用的范例的好方法。
| grep xyz | grep -v grep