You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash脚本的cut/awk工具解析空格分隔的字符串

解析空格分隔字符串为变量的几种方法

嗨,这事儿好办!我给你整理了几种用cut、awk甚至Bash原生命令实现的方法,都能把字符串"30 2 *"拆成三个变量a、b、c,最终输出a=30 b=2 c=*:

方法1:用Bash原生read命令(最简洁)

如果只是简单的空格分隔场景,read命令是最直接的选择,它默认就按空白字符(空格、制表符等)拆分字符串:

# 定义目标字符串
str="30 2 *"
# 直接将三个字段赋值给变量a、b、c
read a b c <<< "$str"
# 验证输出
echo "a=$a b=$b c=$c"

执行后就能得到你想要的结果,而且完全不需要额外工具,效率很高。

方法2:用awk工具提取字段

awk是处理文本的利器,它天生擅长按字段拆分内容,这里我们可以直接通过$1、$2、$3分别获取三个空格分隔的字段:

方式A:分别提取每个变量

str="30 2 *"
a=$(echo "$str" | awk '{print $1}')
b=$(echo "$str" | awk '{print $2}')
c=$(echo "$str" | awk '{print $3}')
echo "a=$a b=$b c=$c"

方式B:一次处理完成所有变量赋值(更高效)

如果不想多次调用awk,可以用进程替换一次性拿到所有字段:

str="30 2 *"
read a b c < <(echo "$str" | awk '{print $1, $2, $3}')
echo "a=$a b=$b c=$c"

方法3:用cut工具拆分字段

cut是轻量的字段提取工具,只需要指定分隔符为空格,再通过-f参数指定字段序号即可:

str="30 2 *"
a=$(echo "$str" | cut -d' ' -f1)
b=$(echo "$str" | cut -d' ' -f2)
c=$(echo "$str" | cut -d' ' -f3)
echo "a=$a b=$b c=$c"

这里要注意:-d' '表示用单个空格作为分隔符,如果字符串里有多个连续空格,cut可能会把它们当成多个分隔符,这时候read或awk的表现会更友好(它们会自动忽略连续空白)。


内容的提问来源于stack exchange,提问作者Anshu Priya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:19:45