2011年12月14日 星期三

Linux, awk with csv file, batch add account

文字檔:account.csv
john,123
peter,456
keven,789
(帳號,密碼)

======================================================
指令
cat account.csv| awk '{print $1}'

結果
john,123
peter,456
keven,789

說明:
awk 預設以空格做為分隔。文字檔因為無空格,所以全部當成同一欄。如果 print 後面是 $2,就會輸出三行空白,因為無內容。

======================================================

指令
cat account.csv| awk 'BEGIN{FS=","}{print $1,$2}'

結果
john 123
peter 456
keven 789

說明
1. FS 表示輸入內容的分隔字元。這裡意思是告訴系統,我要讀取的檔案是以逗號做分隔。
2. 它的輸出,預設仍然是空格,即便後面 print 兩個變數之間是以逗號分隔,只是代表輸出的時候這兩個變數要做分隔,不代表輸出的內容用逗號做分隔。

======================================================
指令
cat account.csv| awk 'BEGIN{FS=","; OFS=","}{print $1,$2}'

結果
john,123
peter,456
keven,789


說明
OFS 代表輸出的分隔字元

======================================================
vi add.sh


#!/bin/bash
for i in `awk 'BEGIN{FS=","}{print $1}' account.csv`
do
useradd $i -g group -d /path/to/folder/$i -s /sbin/nologin
grep "\<$i\>" account.csv | awk 'BEGIN{FS=","}{print $2}' | passwd --stdin $i
done

# 粉紅色內容要自訂

參考文章
http://blog.yam.com/xboomz/article/7873478

沒有留言:

張貼留言