【发布时间】:2019-03-09 14:09:10
【问题描述】:
我在一个目录中有一堆.jks 文件。我想提取别名,从日期和到期日期开始有效。现在我有以下内容:
for f in *; do if [ -f $f ]; then echo "" |keytool -list -v -keystore $f | grep -e "Alias name:" -e "Valid from:"; fi done
会输出类似的东西
Alias name: somehostname.com
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
.
.
.
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
每个别名至少有 1 个证书,但最多有 n 证书。
我希望上面的输出格式如下:
somehostname.com \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022
.
.
.
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT 2022
{empty} 表示对齐的空格。 \t 表示 TAB 分隔符。
这将是 一个 .jks 文件的最终输出。
我想对目录中的所有.jks 文件执行此操作。
如何使用 awk 修改现有的命令行脚本来执行此操作?
【问题讨论】:
-
为了清晰起见,我已经格式化了。
-
删除所有标题和尾随`以及不必要的空行。
-
为什么有
sed标签? -
你真的想要字符串
{empty}吗? -
@Beta 因为我不知道 awk 还是 sed 是这里更好的选择。想要包括这两个选项。 @tink No
{empty}在这种情况下只是为了表示空白,以便底部行对齐并向右移动。 @Tiw keytool 命令只显示一堆我不需要的随机乱码文本和其他信息。我认为 grep 在这里是必要的。