mengambil baris tertentu dari data dgn awk

| Thursday, September 13, 2012

Sebenarnya bingung dgn judul postingnya, yang jelas saya butuh manipulasi dari data/list yg tampil lewat shell..

Contohnya sbb :

Saya ingin merubah owner banyak directory beserta subnya. Nah ownernya folder saat ini ada milik root sedangkan di server lain beda-beda. Sebagai contoh sbb :

Data awal :

# pwd
/home
# ls (data saya di server A)
drwxr-xr-x 10 a a  4096 2012-03-20 09:04 BACKUP/
drwxr-xr-x 17 b b   4096 2012-03-03 11:35 Image/
drwxr-xr-x 17 c c   4096 2012-03-03 11:35 Image2/
dst..

# Setelah saya copy ke server B ownernya berubah milik root semua
maka saya perlu merubah sesuai list diatas dgn perintah chown
akan tetapi terlalu capek dan ribet kan kalo manual.

So lets begin with the magic of awk

di server A ketik :
# ll | awk '{print "chown -R " $3":"$4,$8}' >> /home/ubahmode
Perintah awk diatas untuk memodif sedikit dari tampilan ls dan menyimpannya pada file di home dgn nama file ubahmode

$3 : artinya ambil data kolom ke 3
":" : menyisipkan tanda petik

Jika selesai tinggal copy file ubahmode ke server B, tambahkan hak eksekusi dgn perintah chmod +x ubahmode
Jalankan dgn perintah sh -x ./ubahmode


;)



Untuk kalimat yg gandeng juga bisa diambil lohh

Misalnya mau ambil text tertentu dari /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
Nah kalo cuman butuh data user, uid dan hak shellnya bisa pake perintah


more /etc/passwd | awk 'BEGIN {FS=":"};{print $1,$3,$7}'





0 komentar: