使用 Bash 創建用戶登錄。如果名稱重復,請添加位置。位置應添加到原始名稱以及副本中。
id,location,name,login
1,KP,Lacie,
2,US,Pamella,
3,CY,Korrie,
4,NI,Korrie,
5,BT,Queenie,
6,AW,Donnie,
7,GP,Pamella,
8,KP,Pamella,
9,LC,Pamella,
10,GM,Ericka,
結果應如下所示:
id,location,name,login
1,KP,Lacie,[email protected]
2,US,Pamella,[email protected]
3,CY,Korrie,[email protected]
4,NI,Korrie,[email protected]
5,BT,Queenie,[email protected]
6,AW,Donnie,[email protected]
7,GP,Pamella,[email protected]
8,KP,Pamella,[email protected]
9,LC,Pamella,[email protected]
10,GM,Ericka,[email protected]
我使用 AWK 處理 csv 檔案。
cat data.csv | awk 'BEGIN {FS=OFS=","};
NR > 1 {
split($3, name)
$4 = tolower($3)
split($4, login)
for (k in login) {
!a[login[k]] ? sub(login[k], login[k]"@mail.com", $4) : sub(login[k], tolower($2)login[k]"@mail.com", $4)
}
}; 1' > data_new.csv
該腳本僅將位置值添加到更多重復項。
id,location,name,login
1,KP,Lacie,[email protected]
2,US,Pamella,[email protected]
3,CY,Korrie,[email protected]
4,NI,Korrie,[email protected]
5,BT,Queenie,[email protected]
6,AW,Donnie,[email protected]
7,GP,Pamella,[email protected]
8,KP,Pamella,[email protected]
9,LC,Pamella,[email protected]
10,GM,Ericka,[email protected]
如何將位置添加到初始位置?
uj5u.com熱心網友回復:
一個常見的解決方案是讓 Awk 處理同一個檔案兩次,如果您需要知道是否有重復的檔案。
另請注意,這要求您避免無用使用cat.
awk 'BEGIN {FS=OFS=","};
NR == FNR { seen[$3]; next }
FNR > 1 { $4 = (seen[$3] > 1 ? tolower($2) : "") tolower($3) "@mail.com" }
1' data.csv data.csv >data_new.csv
NR==FNR當您第一次讀取檔案時為真。我們只計算第二遍的$3in出現次數。seen
然后在第二遍中,我們可以只查看當前條目seen來確定是否需要添加前綴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/527938.html
標籤:重击CSVawk重复
下一篇:從json檔案計算值
