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
各列のテキストは大きく異なりますので、私は幅が自動的に調整したいのですが。
私はワンライナーを扱うことができますが、このようなレポートですか?私はどこから始めるべきかわかりません。
$ 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 ""
}
:
より大きな問題に適用するために自分自身を開発し、強化することができる小さな例を参考にして助けを求めることができます。たくさんの人が、探したいパターンを見つけようとしているテキストと、それをどうするべきかを理解しようとしているすべてのテキストを読みたいと思う人はほとんどいません。 –
誰かがそれを解決しようとする努力を示さないこの質問に答えることを考慮しても、読めるほど大きすぎます。 :( – sjsam
サイトにようこそ!質問の中で読者が探しているものについては、[how to ask](https://stackoverflow.com/help/how-to-ask)を参照してください。個人的には、あなたが 'Avail'と' Yes'で始まる行のブロックからカラムをアンラップしたいのではないかと思います。次の 'Yes'に行き、空行またはファイルの終わり(awkの' END {} ')が見えるときに最後のブロックを表示してください。 – cxw