删除 Bash 中第一个空格右侧的字符

Jos*_*eau 9 shell bash shell-script regular-expression

2492  some string continues here
Run Code Online (Sandbox Code Playgroud)

我想将其转换为

2492
Run Code Online (Sandbox Code Playgroud)

在巴什。我该怎么做?

这感觉很接近,但不起作用:

var="2492  some string continues here  "
echo ${var%[[:space:]]*}
Run Code Online (Sandbox Code Playgroud)

gle*_*man 15

因为有多个空格要使用

${var%%[[:space:]]*}
# ...^^
Run Code Online (Sandbox Code Playgroud)

删除以空格开头的最长尾随子字符串

只需一个,%您就可以删除最短的空格序列,后跟零个或多个字符,这只是字符串中的最后一个空格。

$ echo ">$var<"; echo ">${var%[[:space:]]*}<"; echo ">${var%%[[:space:]]*}<"
>2492  some string continues here  <
>2492  some string continues here <
>2492<
Run Code Online (Sandbox Code Playgroud)

如果你只是在寻找第一个 word,你可以这样做:

read -r word rest_of_string <<<"$var"
echo "I have: $word"
Run Code Online (Sandbox Code Playgroud)

假设您没有更改 IFS 变量,这将处理前导空格。