Linux剪切帮助-如何为分隔符指定更多的空格?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (121)

是否有任何方法可以使用剪切命令为更多空格指定字段分隔符(比如“”+)?

例如:在下面的字符串中,我想到‘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可以:

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

或者你可以抛弃grepawk了解正则表达式:

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

但如果,出于某种奇怪的原因,你真的不能使用awk,还可以做其他更简单的事情,比如先将所有空白折叠到单个空格:

ps axu | grep '[j]boss' | sed 's/\s\s*/ /g' | cut -d' ' -f5
用户回答回答于

awk可能是最好的方法,但也可以使用cut:

ps axu | grep jbos[s] | tr -s ' ' | cut -d' ' -f5
#        ^^^^^^^^^^^^   ^^^^^^^^^   ^^^^^^^^^^^^^
#              |            |             |
#              |            |       get 5th field
#              |            |
#              |        squeeze spaces
#              |
#        avoid grep itself to appear in the list

扫码关注云+社区

领取腾讯云代金券