我正在使用 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"
这可能是因为您传递给它一个非换行符终止的字符串:
但
也许考虑
sed -z "s/\n/,/"
在您的管道中替换为paste -sd,