Bash:如何在使用剪切之前修剪空白

use*_*889 11 bash cut trim

我从这样的命令输出一行:

[]$ <command> | grep "Memory Limit"
Memory Limit:           12345 KB
Run Code Online (Sandbox Code Playgroud)

我正试图拔出12345.第一步 - 用冒号分开 - 工作正常

[]$ <command> | grep "Memory Limit" | cut -d ':' -f2
           12345 KB
Run Code Online (Sandbox Code Playgroud)

试图分开这是很棘手的.如何修剪空白以便cut -d ' ' -f1返回"12345"而不是空白?

Joh*_*ofy 12

将命令传递给awk,打印第3列,空格和第4列,如下所示

<command> | awk '{print $3, $4}'
Run Code Online (Sandbox Code Playgroud)

这导致:

12345 KB
Run Code Online (Sandbox Code Playgroud)

要么

<command> | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

如果你想要裸体号码.

  • @PS。你当然是对的。非常感谢您的提示。我的帖子已更改。 (2认同)

ana*_*nik 6

tr在这里有帮助。

$ echo "Memory Limit:           12345 KB" | tr -s " " | cut -d " " -f3
12345
Run Code Online (Sandbox Code Playgroud)
  • tr -s " " -将所有空间压缩为一个
  • cut -d " " -f3 -按空格分为几列,然后选择第三列


anu*_*ava 5

您可以使用awk并避免使用任何cut,sed或regex:

<command> | awk '/Memory Limit/{print $(NF-1)}'

12345
Run Code Online (Sandbox Code Playgroud)
  • /Memory Limit/将使此打印仅与Memory Limit文本一行
  • $(NF-1)会让你last-1在输入领域.