Friday, August 12, 2011

awk ​ໃນ​ 5 ນາທີ (awk in 5 minutes)

awk
ຜູ້ໃຊ້: ຜູ້ທີ່ຕ້ອງການເຮັດວຽກກັບ text file ມີລັກສະນະເປັນຕາຕະລາງ (tabular text file)
ປະ​ເພດ: ​ໃຊ້​ກັບ​ຂໍ້​ມູນ​ເປັນ​ຕົວ​ອັກສອນ (text file)
ຈຸດ​ເດັ່ນ: ​ໄວ​ແລະ​ສະດວກ
ພື້ນຖານ​ຄວາມ​ຮູ້: ພາສາ​ຊີ, unix/linux/DOS
OS: Unix, Linux, Windows
ໝາຍ​ເຫດ​: ​​ແມ່ນ​ຄຳ​ສັ່ງ
                ຜົນ​ໄດ້​ຮັບ
                # ​ເຄື່ອງໝາຍ ໝາຍ​ເຫດ ​ໃຊ້​ໃນ unix/linux
ຕົວຢ່າງຕ່າງ​ໆລຸ່ມ​ນີ້ ​ແມ່ນ​ສຳ​ຫຼັບ​ເຄື່ອງ Linux:

$echo -e "a,1,2,3\n,b,4,5,6\n,d,7,8,9\n" #ຄຳ​ສັ່ງ​ນີ້​ສະ​ແດງ​ໃຫ້​ເຫັນ​ລັກສະນະ​ຂອງ​ຂໍ້​ມູນ​ທີ່​ເຮົາ​ຈະ​ສ້າງ
a,1,2,3
b,4,5,6
d,7,8,9

$echo -e "a,1,2,3\n,b,4,5,6\n,d,7,8,9\n" >data.txt #ຄຳ​ສັ່ງ​ນີ້​ສ້າງ file data.txt

$cat data.txt
a,1,2,3
b,4,5,6
d,7,8,9


$awk -F"," '{print $1"|"$2"|"$3"|"$4}' data.txt
a|1|2|3
b|4|5|6
d|7|8|9

awk   : ​ເອີ້ນ​ໂປ​ຼ​ແກຼມ awk
-F","  : ປະ​ກາດ​ເຄື່ອງໝາຍ​ຂັ້ນ​ຂອງ​ຖັນ ​ໃນ​ນີ້​ແມ່ນ​ເຄື່ອງໝາຍ​ຈຸດ (,)
print  : ຄຳ​ສັ່ງ​​ເພື່ອ​ສະ​ແດງ​ຜົນ​ຢູ່​ໜ້າ​ຈໍ
$1     : ຖັນ​ທີ 1 ​ແລະ​ເຊັ່ນ​ກັນ​ເປັນ​ຖັນ​ທ 2 ​ແລະ 3 ຕາມ​ລຳດັບ ນັບ​ຈາກ​ຊ້າຍ. ຖ້າ​ໃຊ້ $0 ​ແມ່ນ​ພິມ​ທັງ​ແຖວ ຫຼື​ທຸກ​ຖັນ.
"|"      : ພິມ​ເຄື່ອງໝາຍ ( | ) ອອກ. ທຸກ​ຢ່າງ​ຢູ່​ໃນ​ວົງ​ຢືມ​ຄູ່ " " ​ແມ່ນ​ຈະ​ຖືກ​ສະ​ແດງ​ອອກ​ຄື​ກັບ​ທີ່​ມັນ​ຖືກ​ພິມ​ໄວ້.

$awk -F"," '{print $1":"$2":"$4":"$3}' data.txt
a:1:3:2
b:4:6:5
d:7:9:8
  
ສັງ​ເກດ​ຖັນ​ທີ 3 ​ແລະ ຖັນ​ທີ 4 ມີ​ການ​ສະ​ຫຼັບ, ​ເຄື່ອງໝາຍ | ກາຍ​ເປັນ :  . ລອງ​ປ່ຽນ​ໄປ​ເລື້ອຍໆ​ແລະ​ສັງ​ເກດ.

$awk -F"," '{if($2>1) print $1":"$2":"$4":"$3}' data.txt
b:4:6:5
d:7:9:8

$awk -F"," '{if($2<5) print $1":"$2":"$4":"$3}' data.txt
a:1:3:2
b:4:6:5

$awk -F"," '{if(($2>1)&&($2<5)) print $1":"$2":"$4":"$3}' data.txt
b:4:6:5

 ຍັງ​ມີ​ອີກ​ຫຼາຍ​ວິທີ​ທີ່​ເລິກ​ເຊິ່ງ ​ແຕ່​ພໍ​ເທົ່າ​ນີ້​ກ່ອນ ​ເອົາ​ໄວ້​ເຫຼົ່າ​ໃຫ້​ຟັງ​ໃນ​ພາກ 2