gpt4 book ai didi

linux - sed/awk/perl 格式化多个段落

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:50 26 4
gpt4 key购买 nike

dzinfo 给我这样格式的输出;

User: x0000001
Forced into restricted environment: No

Role Name Avail Restricted Env
--------------- ----- --------------
login/Corp_All Yes None
_Example-Role-- Yes _Example-Role--
ALL_Servers-Win ALL_Servers-Win
/US_All /US_All
Domain_GLOBAL-Ro Yes Domain_GLOBAL-Ro
le-CORE_Group-AL le-CORE_Group-AL
L-MacOS/Domain_ L-MacOS/Domain_
GLOBAL GLOBAL

Effective rights:
Password login
Non password login
Allow normal shell


PAM Application Avail Source Roles
--------------- ----- --------------------
* Yes login/US_All
Privileged commands:
Name Avail Command Source Roles
--------------- ----- -------------------- --------------------
CORP_GLOBAL-Com Yes /usr/bin/getfacl CORP_GLOBAL-Role-COR
mand-CORE_SVR_I E_SVR_INFRA_ALL-LNX/
NFRA_ALL-V042-S CORP_GLOBAL
00042/CORP_GLOB
AL
CORP_GLOBAL-Com Yes /usr/bin/dzdo -l CORP_GLOBAL-Role-COR
mand-CORE_SVR_I E_SVR_INFRA_ALL-LNX/
NFRA_ALL-V042-S CORP_GLOBAL
00048/CORP_GLOB
AL
CORP_GLOBAL-Com Yes /bin/cp temp_auth CORP_GLOBAL-Role-COR
mand-CORE_SVR_I /home/sudocfg/author E_SVR_INFRA_ALL-LNX/
NFRA_ALL-V042-S ized_keys CORP_GLOBAL
00085/CORP_GLOB
AL

什么工具是格式化这样的报告的最佳选择?我如何匹配/合并列/行并将其格式化为如下所示?

User: x0000001
Forced into restricted environment: No

Role Name Avail Restricted Env
--------------- ----- --------------
login/Corp_All Yes None
_Example-Role--ALL_Servers-Win/US_All Yes _Example-Role--ALL_Servers-Win/US_All
Domain_GLOBAL-Role-CORE_Group-ALL-MacOS/Domain_GLOBAL Yes Domain_GLOBAL-Role-CORE_Group-ALL-MacOS/Domain_GLOBAL

Effective rights:
Password login
Non password login
Allow normal shell

PAM Application Avail Source Roles
--------------- ----- --------------------
* Yes login/US_All

Privileged commands:
Name Avail Command Source Roles
--------------- ----- -------------------- --------------------
CORP_GLOBAL-Command-CORE_SVR_INFRA_ALL-V042-S00042/CORP_GLOBAL Yes /usr/bin/getfacl CORP_GLOBAL-Role-CORE_SVR_INFRA_ALL-LNX/CORP_GLOBAL
CORP_GLOBAL-Command-CORE_SVR_INFRA_ALL-V042-S00048/CORP_GLOBAL Yes /usr/bin/dzdo -l CORP_GLOBAL-Role-CORE_SVR_INFRA_ALL-LNX/CORP_GLOBAL
CORP_GLOBAL-Command-CORE_SVR_INFRA_ALL-V042-S00085/CORP_GLOBAL Yes /bin/cp temp_auth /home/sudocfg/authorized_keys CORP_GLOBAL-Role-CORE_SVR_INFRA_ALL-LNX/CORP_GLOBAL

每列中的文本可能会有很大差异,所以我希望自动调整宽度。

我可以处理单行,但对于这样的报告?我什至不知道从哪里开始。

最佳答案

为了让你开始,这里基本上是你如何开始使用 GNU awk for FIELDWIDTHS 来隔离每一行的各个字段:

$ cat tst.awk
BEGIN { origFS=FS }
/---/ {
origFS=FS
split($0,f,/\s+|-+/,s)
FIELDWIDTHS=""
for (i=1; i in s; i++) {
FIELDWIDTHS = (i>1 ? FIELDWIDTHS " " : "") length(s[i])
}
}
/^\s*$/ {
FIELDWIDTHS=""
FS=origFS
}
{
for (i=1; i<=NF; i++) {
printf "<%s>", $i, (i<NF?OFS:ORS)
}
print ""
}

.

$ awk -f tst.awk file
<User:><x0000001>
<Forced><into><restricted><environment:><No>

<Role><Name><Avail><Restricted><Env>
<---------------><-----><-------------->
< ><login/Corp_All >< ><Yes >< ><None >< >
< ><_Example-Role-->< ><Yes >< ><_Example-Role-><->
< ><ALL_Servers-Win>< >< >< ><ALL_Servers-Wi><n>
< ></US_All >< >< >< ></US_All ><>
< ><Domain_GLOBAL-R><o ><Yes >< ><Domain_GLOBAL-><R>
< ><le-CORE_Group-A><L >< >< ><le-CORE_Group-><A>
< ><L-MacOS/Domain_>< >< >< ><L-MacOS/Domain><_>
< ><GLOBAL >< >< >< ><GLOBAL ><>

<Effective><rights:>
<Password><login>
<Non><password><login>
<Allow><normal><shell>


<PAM><Application><Avail><Source><Roles>
<---------------><-----><-------------------->
<* >< ><Yes >< ><login/US_All >< >
<Privileged comm><an><ds:><><><>
< Name >< >< Ava><i><l Command >< >
< -------------><-->< ---><-><- ------------------><->
< ><CORP_GLOBAL-Com>< ><Yes >< ></usr/bin/getfacl >< ><CORP_GLOBAL-Role-COR>< >
< ><mand-CORE_SVR_I>< >< >< >< >< ><E_SVR_INFRA_ALL-LNX/>< >
< ><NFRA_ALL-V042-S>< >< >< >< >< ><CORP_GLOBAL >< >
< ><00042/CORP_GLOB>< >< >< >< >< >< >< >
< ><AL >< >< >< >< >< >< >< >
< ><CORP_GLOBAL-Com>< ><Yes >< ></usr/bin/dzdo -l >< ><CORP_GLOBAL-Role-COR>< >
< ><mand-CORE_SVR_I>< >< >< >< >< ><E_SVR_INFRA_ALL-LNX/>< >
< ><NFRA_ALL-V042-S>< >< >< >< >< ><CORP_GLOBAL >< >
< ><00048/CORP_GLOB>< >< >< >< >< >< >< >
< ><AL >< >< >< >< >< >< >< >
< ><CORP_GLOBAL-Com>< ><Yes >< ></bin/cp temp_auth >< ><CORP_GLOBAL-Role-COR>< >
< ><mand-CORE_SVR_I>< >< >< ></home/sudocfg/author>< ><E_SVR_INFRA_ALL-LNX/>< >
< ><NFRA_ALL-V042-S>< >< >< ><ized_keys >< ><CORP_GLOBAL >< >
< ><00085/CORP_GLOB>< >< >< >< >< >< >< >
< ><AL >< >< >< >< ><><><>

您会想要购买 Arnold Robbins 撰写的《Effective Awk Programming》第 4 版,并在开始修改它以了解其工作原理并在此基础上进行构建时将其放在手边以供引用。

关于linux - sed/awk/perl 格式化多个段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com