有没有办法用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‘呢?
谢谢。
发布于 2014-01-31 17:40:08
awk
版本可能是最好的选择,但如果您首先使用tr
压缩重复,您也可以使用cut
ps axu | grep jbos[s] | tr -s ' ' | cut -d' ' -f5
# ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^
# | | |
# | | get 5th field
# | |
# | squeeze spaces
# |
# avoid grep itself to appear in the list
发布于 2015-04-17 04:42:52
为此,我喜欢使用tr -s命令
ps aux | tr -s [:blank:] | cut -d' ' -f3
这会将所有空格压缩到1个空格。这样,告诉cut使用一个空格作为分隔符,就像预期的那样。
发布于 2015-05-06 00:52:32
我将提名tr -s [:blank:]
作为最佳答案。
为什么我们要使用cut?它有一个神奇的命令,说“我们需要第三个字段和它后面的每个字段,忽略前两个字段”。
cat log | tr -s [:blank:] |cut -d' ' -f 3-
我不相信在awk或perl split中有类似的命令,我们不知道会有多少个字段,也就是输出第三个字段到字段X。
https://stackoverflow.com/questions/7142735
复制相似问题