如何保持每一行的前300个字符?

时间:2018-02-19 15:40:03

标签: regex unix sed

我想保留每一行的前300个字符。显而易见的解决方案:

sed -E 's/^(.{0,300}).*/\1/'

显然超过了一些内部正则表达式限制:

RE error: invalid repetition count(s)

一些实验表明,重复计数最多只能达到255,至少在我的平台上(MacOS)。 Python可以处理{0,300},但如果可能的话,我更愿意使用普通的shell工具。有什么想法吗?

PS:是的,我知道,如果我在Python中这样做,我会行[:300]并完全抛弃正则表达式。

1 个答案:

答案 0 :(得分:0)

GNU sed上没有错误,看看cut是否适合您

$ perl -e 'print "a" x 350' | sed -E 's/^(.{0,300}).*/\1/' | wc -L
300
$ perl -e 'print "a" x 350' | cut -c1-300 | wc -L
300