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

如何用Shell工具保留每行前300字符?正则{0,300}遭MacOS限制

实现每行保留前300字符的Shell方案

当然有可行的Shell工具方案!不用纠结正则计数的255上限问题,下面几个方法简单直接,在MacOS(BSD系工具)和其他类Unix环境都能正常工作:

方法1:使用cut命令(最简洁)

cut是专门用来截取文本的工具,按字符数截取的语法非常直观:

cut -c 1-300 your_file.txt
  • -c 1-300 指定截取每行的第1到第300个字符,超过300的部分直接丢弃,不足300的行则保留全部内容。

方法2:使用awk命令(灵活性强)

awk的字符串处理能力很出色,用substr函数可以轻松实现需求:

awk '{print substr($0, 1, 300)}' your_file.txt
  • substr($0, 1, 300) 表示从整行($0)的第1个字符开始,截取长度为300的子串;如果行长度不足300,就返回整个行内容。

方法3:绕开正则限制的sed方案(备选)

如果非要用sed,由于BSD sed的正则重复计数上限是255,可以拆分匹配规则来达到300的长度:

sed -E 's/^(.{255})(.{0,45}).*/\1\2/' your_file.txt
  • 逻辑是先匹配前255个字符,再匹配最多45个字符,最后把这两部分拼接起来,刚好覆盖300的长度。不过这个写法不如前两种简洁,更适合作为思路参考。

推荐优先用cut或awk,完全避开正则限制的问题,操作起来也更省心~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:13:01