'column: line too long' 看起来似乎

'column: line too long' 看起来似乎

我正在使用 grep、sed 和 column 来制作一些 makefile 文档,但是出现以下错误:column: line too long

我的尝试如下:

## this is the documentation
yes:
  @echo hello

help:
  @grep -Pzo "##.*\n[a-zA-Z0-9_-]+:" $(MAKEFILE_LIST) \
  | sed -z "s/\n/,/"                                  \
  | sed -n "s/##\(.*\),\(.*\)[:, 1]/\2\1/p"           \
  | column -t -s ','

我真的不明白这里的问题,因为当我运行不带列的命令时,我得到的行大小远低于 2049(由 C 代码中的 MAXLINELEN 定义)。

回答

读完答案后,我得出结论,只需在第二个 grep 的末尾添加一个 '\n'。如下所示:

sed -n "s/##\(.*\),\(.*\)[:, 1]/\2\1\n/p"

答案1

这可能是因为您传递了一个非换行符终止的字符串:

$ printf 'foo,bar,baz\n' | column -t -s,
foo  bar  baz

$ printf 'foo,bar,baz' | column -t -s,
column: line too long

也许可以考虑sed -z "s/\n/,/"用以下方法替换你的管道paste -sd,

相关内容