拆分 SSL 证书时出错"awk: too many output files 10"



我正在尝试使用 AWK 拆分包含多个 SSL 证书的文件,但显示错误消息: awk:输出文件太多 10

我正在使用的命令如下:

cat ${SSL_CERTIFICATES_PATH} | awk '/BEGIN/ { i++; } /BEGIN/, /END/ { print > i ".extracted.crt" }'

错误信息:

awk: too many output files 10
record number 735

你知道我该如何解决这个问题吗?

你必须close()文件,

awk '/BEGIN/ {f=i++".extracted.crt"}/BEGIN/,/END/{print > f;if(/END/)close(f)}'

Ed Morton建议的最佳解决方案,不应使用范围表达式,有关详细信息,请阅读此处

awk '/BEGIN/{f=(++i)".extracted.crt"} f{print>f} /END/{close(f);f=""}' 

这是示例(不是证书(

输入

$ cat file
BEGIN
1
END
BEGIN
2
END
BEGIN
3
END

执行

$ awk '/BEGIN/{f=i++".extracted.crt"}/BEGIN/,/END/{print > f;if(/END/)close(f)}' file

$ awk '/BEGIN/{f=(++i)".extracted.crt"} f{print>f} /END/{close(f);f=""}' file

输出文件

$ ls *.crt
0.extracted.crt  1.extracted.crt  2.extracted.crt

每个文件内容

$ for i in *.crt; do echo $i; cat $i; done
0.extracted.crt
BEGIN
1
END
1.extracted.crt
BEGIN
2
END
2.extracted.crt
BEGIN
3
END

每次变量 i 的值增加 1 时,我们都必须关闭文件,因此请尝试关注并让我知道这是否对您有帮助。

awk '/BEGIN/ {close(i".extracted.crt");i++} /BEGIN/, /END/ { print > i".extracted.crt" }' ${SSL_CERTIFICATES_PATH}

编辑:泽维尔,我已经与一位拥有SUN 5的朋友进行了检查,并且遵循工作良好,没有任何错误。您可以根据需要放置变量。

/usr/xpg4/bin/awk '/BEGIN/ {close(i".extracted.crt");i++} /BEGIN/, /END/ { print > i".extracted.crt" }' *.crt

最新更新