我正在尝试使用AWK拆分包含多个SSL证书的文件,但显示错误消息: awk:输出文件太多10
我正在使用的命令如下:
function submitForm(){
//do some stuff
}
jQuery(document).ready(function(){
window.timeout=null;
jQuery('#query').on('keyup', function(event){
clearTimeout(window.timeout);
window.timeout = setTimeout(submitForm, 1000); // waits 1 second for user to press a new key
});
});
错误讯息:
cat ${SSL_CERTIFICATES_PATH} | awk '/BEGIN/ { i++; } /BEGIN/, /END/ { print > i ".extracted.crt" }'
你知道我怎么能解决这个问题?
答案 0 :(得分:3)
你必须close()
档,
awk '/BEGIN/ {f=i++".extracted.crt"}/BEGIN/,/END/{print > f;if(/END/)close(f)}'
Ed Morton建议的最佳解决方案,不应使用范围表达式,以获取更多详细信息Read Here
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
答案 1 :(得分:1)
我们必须在每次变量值增加1时关闭文件,所以请尝试关注并告诉我这是否对您有帮助。
awk '/BEGIN/ {close(i".extracted.crt");i++} /BEGIN/, /END/ { print > i".extracted.crt" }' ${SSL_CERTIFICATES_PATH}
编辑: Xavier,我已经和一位拥有SUN 5的朋友一起检查过并且工作顺利,没有任何错误。您可以根据需要放置变量。
/usr/xpg4/bin/awk '/BEGIN/ {close(i".extracted.crt");i++} /BEGIN/, /END/ { print > i".extracted.crt" }' *.crt