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

如何使用bash的printf命令按指定列宽对文本进行折行处理

实现代码

你可以直接使用如下纯bash+printf的方案,完全复现fold -10的输出效果:

# 定义变量
drive=/test1/test2/test3/test4
# 指定折行宽度
col_width=10

# 循环截取固定长度子串并输出
for ((offset=0; offset<${#drive}; offset+=col_width)); do
    printf "%s\n" "${drive:offset:col_width}"
done

输出验证

执行上述代码后得到的输出和echo $drive | fold -10完全一致:

/test1/tes
t2/test3/t
est4

原理说明

  • 用${#drive}获取目标字符串的总长度
  • 用bash内置的子串扩展语法${drive:offset:col_width},从偏移量offset位置开始,最多截取col_width个字符
  • 每次截取后用printf输出子串并追加换行,最终实现按指定列宽折行的效果
    该方案全部使用bash内置功能和printf实现,无需依赖fold等外部命令,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:03