ການນໍາສະເຫນີ
ຄໍາສັ່ງ grep linux ຖືກນໍາໃຊ້ເປັນວິທີການສໍາລັບການກັ່ນຕອງເຂົ້າ.
GREP stands for Global Regular Expression Printer ແລະດັ່ງນັ້ນເພື່ອນໍາໃຊ້ໄດ້ຢ່າງມີປະສິດທິຜົນ, ທ່ານຄວນມີຄວາມຮູ້ບາງຢ່າງກ່ຽວກັບການສະແດງອອກແບບປົກກະຕິ.
ໃນບົດຄວາມນີ້ຂ້ອຍຈະສະແດງຕົວຢ່າງຕົວຢ່າງທີ່ຊ່ວຍໃຫ້ທ່ານເຂົ້າໃຈຄໍາສັ່ງ grep.
01 of 09
ວິທີການຄົ້ນຫາສໍາລັບຕົວອັກສອນໃນໄຟລ໌ທີ່ໃຊ້ GREP
ຈິນຕະນາການວ່າທ່ານມີເອກະສານທີ່ເອີ້ນວ່າປື້ມທີ່ມີຊື່ປື້ມຂອງເດັກນ້ອຍດັ່ງຕໍ່ໄປນີ້:
- Robin Hood
- Little Red Riding Hood
- Peter Pan
- Goldilocks ແລະສາມຫມີສວນ່
- Snow White ແລະເຈັດ Dwarfs
- Pinnochio
- ແມວໃນຫມວກ
- ສາມຫມູນ້ອຍ
- The Gruffalo
- Charlie ແລະໂຮງງານເລດ
ເພື່ອຊອກຫາປື້ມທັງຫມົດທີ່ມີຄໍາວ່າ "The" ໃນຫົວຂໍ້ທີ່ທ່ານຈະໃຊ້ syntax ຕໍ່ໄປນີ້:
grep The books
ຜົນໄດ້ຮັບດັ່ງຕໍ່ໄປນີ້ຈະຖືກສົ່ງຄືນ:
- Goldilocks ແລະສາມຫມີສວນ່
- Snow White ແລະເຈັດ Dwarfs
- ແມວໃນຫມວກ
- ສາມຫມູນ້ອຍ
- The Gruffalo
- Charlie ແລະໂຮງງານເລດ
ໃນແຕ່ລະກໍລະນີ, ຄໍາວ່າ "The" ຈະຖືກເນັ້ນໃສ່.
ໃຫ້ສັງເກດວ່າການຄົ້ນຫາແມ່ນເລື່ອງທີ່ລະອຽດອ່ອນດັ່ງນັ້ນຖ້າຊື່ຫນຶ່ງມີ "ຕົວແທນ" ແທນ "The" ແລ້ວມັນຈະບໍ່ຖືກສົ່ງຄືນ.
ເພື່ອບໍ່ສົນໃຈກໍລະນີທີ່ທ່ານສາມາດເພີ່ມສະຫຼັບຕໍ່ໄປນີ້:
grep ປື້ມ - ງາມ, ກໍລະນີ
ທ່ານຍັງສາມາດໃຊ້ switch-i ດັ່ງຕໍ່ໄປນີ້:
grep -i ປື້ມ
02 of 09
ຄົ້ນຫາສໍາລັບ String ໃນໄຟລ໌ໂດຍໃຊ້ Wildcards
ຄໍາສັ່ງ grep ແມ່ນມີອໍານາດຫຼາຍ. ທ່ານສາມາດນໍາໃຊ້ເຕັກນິກການຈັບຄູ່ແບບຟອມຕ່າງໆເພື່ອຄັດເລືອກເອົາຜົນໄດ້ຮັບ.
ໃນຕົວຢ່າງນີ້ຂ້ອຍຈະສະແດງວິທີການຄົ້ນຫາຊ່ອຍແນ່ໃນແຟ້ມໂດຍໃຊ້ ຕົວອັກສອນຕົວອັກສອນ .
ຈິນຕະນາການວ່າທ່ານມີໄຟລ໌ທີ່ເອີ້ນວ່າສະຖານທີ່ທີ່ມີສະຖານທີ່ສະຖານທີ່ສວີເດນດັ່ງຕໍ່ໄປນີ້:
aberdeen
aberystwyth
aberlour
inverurie
inverness
newburgh
new deer
new galloway
glasgow
edinburgh
ຖ້າທ່ານຕ້ອງການຊອກຫາສະຖານທີ່ທັງຫມົດທີ່ມີ inver ໃນຊື່ໃຊ້ syntax ຕໍ່ໄປນີ້:
grep inver * places
ຕົວແທນ (*) ຕົວແທນເປັນຕົວເລກ 0 ຫຼືຫຼາຍກວ່າ. ດັ່ງນັ້ນຖ້າທ່ານມີສະຖານທີ່ທີ່ເອີ້ນວ່າ inver ຫຼືບ່ອນທີ່ເອີ້ນວ່າ inverness ແລ້ວທັງສອງຈະຖືກສົ່ງຄືນ.
ຕົວແທນຕົວແທນອື່ນທີ່ທ່ານສາມາດໃຊ້ແມ່ນໄລຍະເວລາ (.). ທ່ານສາມາດໃຊ້ນີ້ເພື່ອໃຫ້ກົງກັບຈົດຫມາຍດຽວ.
grep inverr places
ຄໍາສັ່ງຂ້າງເທິງນີ້ຈະຊອກຫາສະຖານທີ່ທີ່ເອີ້ນວ່າ inverurie ແລະ inverary ແຕ່ບໍ່ໄດ້ພົບເຫັນ invererie ເພາະວ່າມີພຽງແຕ່ຕົວອັກສອນຕົວຫນຶ່ງລະຫວ່າງສອງ r ເທົ່າກັບຫມາຍເຖິງໄລຍະດຽວ.
ຕົວແທນຕົວແທນໄລຍະເວລາເປັນປະໂຫຍດແຕ່ມັນສາມາດກໍ່ໃຫ້ເກີດບັນຫາຖ້າທ່ານມີສ່ວນຫນຶ່ງຂອງຂໍ້ຄວາມທີ່ທ່ານກໍາລັງຊອກຫາ.
ຕົວຢ່າງເບິ່ງໃນບັນຊີຊື່ໂດເມນນີ້
- linuxaboutcom
- pcsupportaboutcom
- mp3aboutcom
- minecraftaboutcom
- androidgamesaboutcom
- netforbeginnersaboutcom
- dailylinuxusercom
- google.co.uk
- googleau
- direct.govuk
ເພື່ອຄົ້ນຫາ allcoms ທ່ານສາມາດຄົ້ນຫາໂດຍໃຊ້ syntax ຕໍ່ໄປນີ້:
grep * about * domain names
ຄໍາສັ່ງຂ້າງເທິງຈະຕົກລົງຖ້າບັນຊີລາຍຊື່ທີ່ມີຊື່ຕໍ່ໄປນີ້:
- dailylinuxusercom / abouthtml
ດັ່ງນັ້ນ, ທ່ານສາມາດລອງວິທີການດັ່ງຕໍ່ໄປນີ້:
grep * aboutcom ຊື່ໂດເມນ
ນີ້ຈະເຮັດວຽກໄດ້ດີເວັ້ນເສຍແຕ່ວ່າມີໂດເມນທີ່ມີຊື່ຕໍ່ໄປນີ້:
aboutycomcom
ເພື່ອຄົ້ນຫາຈິງໆກ່ຽວກັບ about.com ທ່ານຈໍາເປັນຕ້ອງຫລີກຫນີຈາກຈຸດດັ່ງຕໍ່ໄປນີ້:
grep * ກ່ຽວກັບ \ com ຊື່ໂດເມນ
ຕົວແທນທີ່ສຸດທ້າຍທີ່ຈະສະແດງໃຫ້ທ່ານເປັນເຄື່ອງຫມາຍຄໍາຖາມທີ່ຫມາຍເຖິງສູນຫຼືຫນຶ່ງຕົວອັກສອນ.
ຍົກຕົວຢ່າງ:
grep? ber placenames
ຄໍາສັ່ງຂ້າງເທິງນີ້ຈະກັບຄືນໄປຫາ aberdeen, aberystwyth ຫຼືແມ້ກະທັ້ງ berwick.
03 of 09
ຄົ້ນຫາສໍາລັບສາຍໃນຕອນເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງເສັ້ນໃຊ້ grep
ສັນຍາລັກ (^) ແລະສັນຍາລັກເງິນໂດລາ ($) ຊ່ວຍໃຫ້ທ່ານຄົ້ນຫາຮູບແບບໃນຕອນເລີ່ມຕົ້ນແລະສິ້ນສຸດຂອງເສັ້ນ.
ຈິນຕະນາການວ່າທ່ານມີໄຟລ໌ທີ່ເອີ້ນວ່າບານເຕະທີ່ມີຊື່ທີມຕໍ່ໄປນີ້:
- Blackpool
- Liverpool
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC United Of Manchester
ຖ້າທ່ານຕ້ອງການຊອກຫາທີມງານທັງຫມົດທີ່ເລີ່ມຕົ້ນກັບ Manchester ທ່ານຈະຕ້ອງໃຊ້ syntax ຕໍ່ໄປນີ້:
grep Manchester teams
ຄໍາສັ່ງຂ້າງເທິງນີ້ຈະສົ່ງກັບ Manchester City ແລະ Manchester United ແຕ່ບໍ່ແມ່ນ FC United ໃນ Manchester.
ອີກທາງເລືອກຫນຶ່ງທ່ານສາມາດຊອກຫາທີມງານທັງຫມົດທີ່ສິ້ນສຸດດ້ວຍ United ໂດຍໃຊ້ syntax ຕໍ່ໄປນີ້:
grep United $ teams
ຄໍາສັ່ງຂ້າງເທິງນີ້ຈະສົ່ງກັບ Manchester United ແລະ Newcastle United ແຕ່ບໍ່ແມ່ນ FC United ໃນ Manchester.
04 of 09
ນັບຈໍານວນການຈັບຄູ່ໂດຍໃຊ້ grep
ຖ້າທ່ານບໍ່ຢາກກັບຄືນເສັ້ນທີ່ກົງກັບຮູບແບບທີ່ໃຊ້ grep ແຕ່ວ່າທ່ານພຽງແຕ່ຕ້ອງການຮູ້ວ່າມີຫຼາຍວິທີທີ່ທ່ານສາມາດໃຊ້ syntax ຕໍ່ໄປນີ້:
grep-c pattern inputfile
ຖ້າຮູບແບບດັ່ງກ່າວຖືກຈັບຄູ່ສອງຄັ້ງແລ້ວຈໍານວນ 2 ຈະຖືກສົ່ງຄືນ.
05 of 09
ຊອກຫາຂໍ້ກໍານົດທັງຫມົດທີ່ບໍ່ຖືກນໍາໃຊ້ໂດຍ grep
ຈິນຕະນາການວ່າທ່ານມີລາຍຊື່ສະຖານທີ່ທີ່ມີບັນດາປະເທດທີ່ມີລາຍຊື່ດັ່ງຕໍ່ໄປນີ້:
- aberdeen scotland
- glasgow scotland
- liverpool england
- colwyn bay
- london england
ທ່ານອາດຈະສັງເກດເຫັນວ່າຫີນບູນບໍ່ມີປະເທດທີ່ກ່ຽວຂ້ອງກັບມັນ.
ເພື່ອຄົ້ນຫາສະຖານທີ່ທັງຫມົດທີ່ມີປະເທດທີ່ທ່ານສາມາດໃຊ້ syntax ຕໍ່ໄປນີ້:
grep land $ places
ຜົນໄດ້ຮັບຜົນຕອບແທນຈະເປັນສະຖານທີ່ທັງຫມົດ, ຍົກເວັ້ນສໍາລັບຂົວໂຄວີນ.
ນີ້ແນ່ນອນພຽງແຕ່ເຮັດວຽກສໍາລັບສະຖານທີ່ທີ່ສິ້ນສຸດໃນດິນ (ບໍ່ແມ່ນວິທະຍາສາດ).
ທ່ານສາມາດ invert ເລືອກໂດຍໃຊ້ syntax ຕໍ່ໄປນີ້:
grep-v land $ places
ນີ້ຈະຊອກຫາສະຖານທີ່ທັງຫມົດທີ່ບໍ່ໄດ້ສິ້ນສຸດລົງກັບທີ່ດິນ.
06 of 09
ວິທີການຫາເສັ້ນຫວ່າງເປົ່າໃນໄຟລ໌ທີ່ໃຊ້ grep
ຈິນຕະນາການວ່າທ່ານມີໄຟລ໌ເຂົ້າທີ່ຖືກນໍາໃຊ້ໂດຍຄໍາຮ້ອງສະຫມັກຂອງພາກສ່ວນທີສາມຊຶ່ງຢຸດການອ່ານໄຟລ໌ໃນເວລາທີ່ພົບວ່າມີເສັ້ນເປົ່າຄືດັ່ງຕໍ່ໄປນີ້:
- aberdeen scotland
- inverness scotland
- liverpool england
- colwyn bay wales
ໃນເວລາທີ່ຄໍາຮ້ອງສະຫມັກໄດ້ຮັບການກັບເສັ້ນຫຼັງຈາກ liverpool ມັນຈະຢຸດເຊົາການອ່ານຄວາມຫມາຍ colwyn Bay ຖືກພາດໂອກາດຫມົດ.
ທ່ານສາມາດໃຊ້ grep ເພື່ອຄົ້ນຫາເສັ້ນຫວ່າງທີ່ມີໄວຣັສຕໍ່ໄປນີ້:
grep $ places
ແຕ່ຫນ້າເສຍດາຍນີ້ບໍ່ແມ່ນຜົນປະໂຫຍດໂດຍສະເພາະແມ່ນຍ້ອນວ່າມັນພຽງແຕ່ສົ່ງຄືນເສັ້ນຫວ່າງເປົ່າ.
ແນ່ນອນວ່າທ່ານສາມາດໄດ້ຮັບການນັບຈໍານວນເສັ້ນຫວ່າງເປົ່າເປັນເຊັກເພື່ອເບິ່ງວ່າໄຟລ໌ແມ່ນຖືກຕ້ອງດັ່ງຕໍ່ໄປນີ້:
grep-c $ places
ຢ່າງໃດກໍ່ຕາມ, ມັນຈະເປັນປະໂຫຍດຫຼາຍທີ່ຈະຮູ້ວ່າບັນດາເສັ້ນທີ່ມີສາຍຫວ່າງເພື່ອໃຫ້ທ່ານສາມາດທົດແທນໄດ້. ທ່ານສາມາດເຮັດໄດ້ດ້ວຍຄໍາສັ່ງຕໍ່ໄປນີ້:
grep-n $ places
07 of 09
ວິທີການຄົ້ນຫາສໍາລັບສາຍຂອງຕົວອັກສອນຫຍໍ້ຫຼືຕົວອັກສອນຕົວນ້ອຍໂດຍໃຊ້ grep
ການນໍາໃຊ້ grep ທ່ານສາມາດກໍານົດເສັ້ນໃດໃນໄຟລ໌ທີ່ມີລັກສະນະຕົວອັກສອນໂດຍໃຊ້ syntax ຕໍ່ໄປນີ້:
grep '[AZ]' filename
ວົງເລັບ [] ໃຫ້ທ່ານກໍານົດລະດັບຂອງຕົວອັກສອນ. ໃນຕົວຢ່າງຂ້າງເທິງນີ້ມັນກົງກັບລັກສະນະໃດຫນຶ່ງທີ່ຢູ່ລະຫວ່າງ A ແລະ Z.
ດັ່ງນັ້ນເພື່ອໃຫ້ກົງກັບຕົວອັກສອນຕົວອັກສອນຕົວອັກສອນທີ່ທ່ານສາມາດໃຊ້ syntax ຕໍ່ໄປນີ້:
grep '[az]' filename
ຖ້າທ່ານຕ້ອງການທີ່ຈະເທົ່າກັບຕົວອັກສອນແລະບໍ່ແມ່ນຕົວເລກຫລືສັນຍາລັກອື່ນໆທ່ານສາມາດໃຊ້ syntax ຕໍ່ໄປນີ້:
grep '[a-zA-Z]' ຊື່ໄຟລ໌
ທ່ານສາມາດເຮັດເຊັ່ນດຽວກັນກັບຕົວເລກດັ່ງຕໍ່ໄປນີ້:
grep '[0-9]' ຊື່ໄຟລ໌
08 of 09
ກໍາລັງຊອກຫາແບບຟອມແບບດຽວກັນໂດຍໃຊ້ grep
ທ່ານສາມາດໃຊ້ວົງເລັບ {} ເພື່ອຊອກຫາແບບຟອມທີ່ເຮັດເລື້ມຄືນ.
ຈິນຕະນາການວ່າທ່ານມີໄຟລ໌ທີ່ມີເບີໂທລະສັບດັ່ງຕໍ່ໄປນີ້:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
ທ່ານຮູ້ວ່າສ່ວນທໍາອິດຂອງຈໍານວນຕ້ອງມີສາມຕົວເລກແລະທ່ານຕ້ອງການຊອກຫາເສັ້ນທີ່ບໍ່ກົງກັບຮູບແບບນີ້.
ຈາກຕົວຢ່າງກ່ອນຫນ້ານີ້ທ່ານຮູ້ວ່າ [0-9] ສົ່ງກັບຄືນທັງຫມົດໃນແຟ້ມ.
ໃນຕົວຢ່າງນີ້ພວກເຮົາຕ້ອງການສາຍທີ່ເລີ່ມຕົ້ນດ້ວຍສາມເລກທີ່ຕິດຕາມໂດຍສະມະການ (-). ທ່ານສາມາດເຮັດໄດ້ດ້ວຍ syntax ຕໍ່ໄປນີ້:
grep "[0-9] [0-9] [0-9] -" ຈໍານວນ
ດັ່ງທີ່ພວກເຮົາຮູ້ຈາກຕົວຢ່າງທີ່ຜ່ານມາ carat (^) ຫມາຍຄວາມວ່າເສັ້ນຕ້ອງເລີ່ມຕົ້ນດ້ວຍຮູບແບບດັ່ງຕໍ່ໄປນີ້.
[0-9] ຈະຊອກຫາຈໍານວນໃດຫນຶ່ງລະຫວ່າງ 0 ແລະ 9. ດັ່ງທີ່ໄດ້ຖືກລວມເຖິງສາມຄັ້ງເທົ່າກັບ 3 ເລກ. ສຸດທ້າຍມີສະມະການທີ່ຈະສະແດງວ່າເສັ້ນຜ່າກາງຕ້ອງປະສົບຜົນສໍາເລັດສາມຕົວເລກ.
ໂດຍການໃຊ້ວົງເລັບ, ທ່ານສາມາດຄົ້ນຫາຂະຫນາດນ້ອຍກວ່າດັ່ງຕໍ່ໄປນີ້:
grep "[0-9] \ {3 \} -" numbers
slash escapes {ວົງເລັບດັ່ງນັ້ນມັນເຮັດວຽກເປັນສ່ວນຫນຶ່ງຂອງການສະແດງອອກຢ່າງເປັນປົກກະຕິແຕ່ໂດຍເນື້ອແທ້ແລ້ວສິ່ງທີ່ເວົ້ານີ້ແມ່ນ [0-9] {3} ເຊິ່ງຫມາຍຄວາມວ່າຈໍານວນໃດຫນຶ່ງລະຫວ່າງ 0 ຫາ 9 ສາມເທື່ອ.
ຕົວຍຶດ curly ສາມາດນໍາໃຊ້ດັ່ງຕໍ່ໄປນີ້:
{5,10}
{5,}
{5,10} ຫມາຍຄວາມວ່າຕົວອັກສອນທີ່ຖືກຄົ້ນຫາຕ້ອງໄດ້ຖືກຊ້ໍາຢ່າງຫນ້ອຍ 5 ເທື່ອແຕ່ບໍ່ເກີນ 10 ເທົ່າ, ແຕ່ {5,} ຫມາຍຄວາມວ່າຕົວອັກສອນຕ້ອງໄດ້ຖືກຊ້ໍາຢ່າງຫນ້ອຍ 5 ເທື່ອແຕ່ມັນອາດຈະຫຼາຍກວ່ານັ້ນ.
09 of 09
ການໃຊ້ Output ຈາກຄໍາສັ່ງອື່ນໂດຍໃຊ້ grep
ດັ່ງນັ້ນ, ພວກເຮົາໄດ້ເບິ່ງຮູບແບບທີ່ກົງກັນໃນແຕ່ລະໄຟລ໌ແຕ່ວ່າ grep ສາມາດນໍາໃຊ້ຜົນຜະລິດຈາກຄໍາສັ່ງອື່ນໆເປັນການປ້ອນຂໍ້ມູນສໍາລັບການຊອກຫາຮູບແບບ.
ຕົວຢ່າງທີ່ດີຂອງການນີ້ແມ່ນການນໍາໃຊ້ຄໍາສັ່ງ ps ທີ່ລະບຸຂະບວນການທີ່ໃຊ້ວຽກ.
ຕົວຢ່າງເຊັ່ນດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້:
ps-e
ທັງຫມົດຂອງຂະບວນການແລ່ນໃນລະບົບຂອງທ່ານຈະຖືກສະແດງ.
ທ່ານສາມາດໃຊ້ grep ເພື່ອຄົ້ນຫາຂະບວນການແລ່ນໂດຍສະເພາະດັ່ງຕໍ່ໄປນີ້:
ps -ef | grep firefox