Text-Processing
將幾千行txt解析成行列
手頭的文件列出了數千名使用者的姓名、憑據、角色和權限。它以 .xls 的形式傳遞給我,但行和列的排列方式不正確。我已經使用 awk 和 sed 重新格式化了原始文件,現在我有許多行格式一致:
ID ;email ;role ;privilege ;access-to 8charID1 ;first.lastname@domain.org ;usr ;read ;finance ;HR ;accounting; dev 8charID2 ;first.lastname@domain.org ;mgr ;rwx ;finance 8charID3 ;first.lastname@domain.org ;usr ;rx ;marketing ;dev ;doc . . n x 1,000 number of users
但我被困在下一步。
目標:重新列印這些行,以便在有多個訪問欄位(如第 1 行或第 3 行)的情況下,按照訪問欄位的數量重新列印所有前面的欄位,並將訪問欄位重新排序到單個列中。
ID ;email ;role ;privilege ;access-to abcuser1 ;first.lastname@domain.org ;usr ;read ;finance abcuser1 ;first.lastname@domain.org ;usr ;read ;HR abcuser1 ;first.lastname@domain.org ;usr ;read ;accounting abcuser1 ;first.lastname@domain.org ;usr ;read ;dev user2def ;first.lastname@domain.org ;mgr ;rwx ;finance zyxuser3 ;first.lastname@domain.org ;usr ;rx ;marketing zyxuser3 ;first.lastname@domain.org ;usr ;rx ;dev zyxuser3 ;first.lastname@domain.org ;usr ;rx ;publication . . . n x 1,000 number of users
awk -F';' -v OFS=';' ' { for (i=5; i<=NF; i++) print $1,$2,$3,$4,$i } ' file
輸出
ID ;email ;role ;privilege ;access-to 8charID1 ;first.lastname@domain.org ;usr ;read ;finance 8charID1 ;first.lastname@domain.org ;usr ;read ;HR 8charID1 ;first.lastname@domain.org ;usr ;read ;accounting 8charID1 ;first.lastname@domain.org ;usr ;read ; dev 8charID2 ;first.lastname@domain.org ;mgr ;rwx ;finance 8charID3 ;first.lastname@domain.org ;usr ;rx ;marketing 8charID3 ;first.lastname@domain.org ;usr ;rx ;dev 8charID3 ;first.lastname@domain.org ;usr ;rx ;doc