tacacs ファイルの特定の部分を列に出力できる Bash スクリプト

tacacs ファイルの特定の部分を列に出力できる Bash スクリプト

tacacsファイルの一部を毎月のレポートに出力しようとしています。

Pythonで試してみましたが、まだ結果にエラーがあるため、単純なbashスクリプトにエレガントな解決策があるかどうかを調べようとしました。

ファイルから取り出したいビットは次のとおりです。

user = user1 {
      member = group2
 }

user = user2 {
      member = group3
 }

今理想的に私が望むのは、group2に属するすべてのメンバーが、自分が属するグループの名前と一緒に1つの列と別の列に出力されることです。

毎月の電子メール部分は私が処理できますが、出力に問題があるだけです。

どんなアイデアがありますか?

答え1

$ awk '/user =/ { u = $3 } /member =/ { print u, $3 }' file
user1 group2
user2 group3

一致する行が見つかると、user =ユーザー名が記憶されます(スペースで区切られた3番目のフィールドから取得されます)。一致する行が見つかると、member =記憶されたユーザー名と行の3番目のフィールド(グループ名である必要があります)が出力されます。

私はファイルの種類に慣れておらず、ファイルに何が違うのかわからないので、これは質問で提供されている他のデータに適用されるとは言えません。

関連情報