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

Bash如何使用参数展开按制表符分割字符串?

解决bash参数展开替换制表符为换行的问题

你当前的代码存在两个关键问题:

  • 变量赋值时,foo=$'A B'里的分隔符是空格而非制表符,正确的制表符写法应该是$'A\tB'
  • 参数展开的替换模式里,'\t'被单引号包裹,bash不会将其解析为制表符,而是当作普通的\t字符串处理

正确的参数展开写法

直接在替换模式中使用未被引号包裹的\t,或者用$'\t'来表示制表符:

foo=$'A\tB'
echo "${foo//$'\t'/$'\n'}"

或者更简洁的写法(bash会在参数展开的模式部分解析转义字符):

foo=$'A\tB'
echo "${foo//\t/$'\n'}"

执行后就能得到你想要的输出:

A
B

替代方案:使用tr命令

如果只是单纯将制表符替换为换行,tr命令会更直观高效,尤其处理文件内容时:

# 处理单个变量
echo "$foo" | tr '\t' '\n'

# 直接处理文本文件
tr '\t' '\n' < your_file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:55:57