【发布时间】:2018-02-19 15:40:02
【问题描述】:
我只想保留每行的前 300 个字符。显而易见的解决方案:
sed -E 's/^(.{0,300}).*/\1/'
显然超出了一些内部正则表达式限制:
RE error: invalid repetition count(s)
一些实验表明,代表次数最多只能达到 255,至少在我的平台 (MacOS) 上是这样。 Python 可以处理 {0,300},但如果可能的话,我更愿意使用普通的 shell 工具来处理。有什么想法吗?
PS:是的,我知道,如果我是用 Python 做的,我会做 line[:300] 并完全放弃正则表达式。
【问题讨论】:
-
也许写:
.{0,255}.{0,45}代替.{0,300}。愿诀窍与你同在。 -
最简单的方法就是剪掉字符串
cut -c -300 server.log -
对我有用
mingw。我在玩{0,300}和{1,300},两者都很好用。那么,您使用哪个 shell,哪个sed版本?哪些线路会导致问题?