【问题标题】:How to keep just the first 300 charactes of every line? [duplicate]如何只保留每行的前 300 个字符? [复制]
【发布时间】: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 版本?哪些线路会导致问题?

标签: regex unix sed


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多