如何在Bash脚本中将SUSE产品注册信息整理为指定列格式输出
SUSE产品注册状态格式化输出的Bash实现
脚本实现
#!/bin/bash echo "Installed Products :" /usr/bin/SUSEConnect --status-text \ # 保留含注册状态的行(若已完成初步过滤可删除此grep行) | grep -E '(Registered|NotRegistered)' \ # 移除带括号的模块ID内容 | sed 's/ (.*)//' \ # 格式化对齐输出:名称占30字符左对齐,状态紧随其后 | awk '{printf " %-30s %s\n", $1, $2}'
各步骤说明
- 筛选有效行:
grep -E '(Registered|NotRegistered)'只保留包含注册状态的模块行,避免无关信息干扰。如果已经完成初步过滤,可直接删除这一步。 - 移除模块ID:
sed 's/ (.*)//'匹配并删除行内所有(...)格式的模块ID内容,只保留模块名称和注册状态。 - 对齐格式化:
awk通过printf实现固定缩进和字段对齐,%-30s确保模块名称占30字符宽度且左对齐,后续的注册状态自然对齐在同一列。
适配特殊场景
如果模块名称包含空格(如Desktop Applications Module),可将awk部分替换为:
awk '{status=$NF; $NF=""; printf " %-30s %s\n", $0, status}'
此写法会把最后一个字段作为状态,前面所有字段合并为模块名称,保证对齐效果不受名称空格影响。
内容的提问来源于stack exchange,提问作者vijayedm
相关产品推荐
相关产品推荐

