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

11 浏览
0 Comments

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

有没有办法在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'命令呢?

谢谢。

0
0 Comments

问题的原因是希望在使用cut命令时指定更多的空格作为分隔符,以便正确处理文本。解决方法是使用tr命令将所有的连续空格压缩为一个空格,然后再使用cut命令指定空格作为分隔符。

具体的解决方法是在使用cut命令前先使用tr命令对文本进行处理,将连续的空格压缩为一个空格。这样,cut命令在使用空格作为分隔符时就能按预期的方式进行分割。

以下是一个示例命令:

ps aux | tr -s [:blank:] | cut -d' ' -f3

这个命令首先使用ps aux命令获取进程列表,然后通过tr命令将连续的空格压缩为一个空格,最后使用cut命令指定空格作为分隔符,并获取第3列的内容。

这种方法稍微比使用awk命令的方法慢5-10%(因为需要处理一个额外的tr管道),但一般来说这个差距是可以忽略的。

0
0 Comments

问题:如何在使用cut命令时指定更多的分隔符空格?

在上述内容中,提到了使用awk命令来解决该问题,并给出了相应的示例代码。另外,还提到了如果不能使用awk命令的情况下可以使用其他简单的方法,比如将所有的空格合并为一个空格,然后使用cut命令进行分割。最后还提到了一个有趣的grep技巧,可以用来筛选出特定的进程。

解决方法:

1. 使用awk命令:

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

或者

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

2. 使用sed和cut命令:

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

其中,sed命令用于将连续的空格合并为一个空格,然后使用cut命令按空格进行分割。

以上就是如何在使用cut命令时指定更多的分隔符空格的解决方法。

此外,还提到了一个有趣的grep技巧,可以用来筛选出特定的进程。该技巧可以避免使用"grep xyz | grep -v grep"这种方式,可以更简洁地筛选出需要的进程。

值得注意的是,某些情况下该grep技巧在crontab文件中可能不起作用。对此没有给出具体原因。

本文介绍了如何在使用cut命令时指定更多的分隔符空格的解决方法。其中推荐使用awk命令来解决该问题,并给出了相应的示例代码。另外,还介绍了使用sed和cut命令的方法,以及一个有趣的grep技巧用于筛选特定的进程。

0
0 Comments

问题:如何在使用cut命令时指定更多的分隔符空间?

原因:在使用cut命令时,如果要指定更多的分隔符空间,需要进行一些额外的操作。

解决方法:可以使用awk版本来解决这个问题,但也可以在使用cut命令之前使用tr命令来压缩重复的空格。

详细步骤如下:

1. 使用ps axu命令获取到进程列表。

2. 使用grep命令过滤出包含jbos[s]的进程。

3. 使用tr命令将连续的空格压缩为一个空格。

4. 使用cut命令指定分隔符为一个空格,并获取第5个字段。

示例代码如下:

ps axu | grep jbos[s] | tr -s ' ' | cut -d' ' -f5

以上是使用cut命令指定更多的分隔符空间的方法,但也有人认为在这种情况下使用awk命令更好。另外,如果要打印出从第n个字段到最后一个字段的内容,使用cut命令的"-fN-"语法比使用awk命令更简单。

以上是解决问题的原因和方法的整理。

0