6 ເຄື່ອງມື CLI ທີ່ດີທີ່ສຸດໃນການຄົ້ນຫາຂໍ້ມູນທີ່ມີຮູບແບບທົ່ງພຽງໂດຍໃຊ້ ສຳ ນວນປົກກະຕິ


ຄູ່ມືນີ້ໃຊ້ເວລາທັດສະນະກ່ຽວກັບບາງເຄື່ອງມືທີ່ດີທີ່ສຸດໃນເສັ້ນຄໍາສັ່ງທີ່ຖືກນໍາໃຊ້ສໍາລັບການຄົ້ນຫາສາຍທີ່ຖືກຕ້ອງຫຼືຮູບແບບຕ່າງໆໃນເອກະສານຂໍ້ຄວາມ. ເຄື່ອງມືເຫຼົ່ານີ້ມັກຖືກ ນຳ ໃຊ້ຄຽງຄູ່ກັບ ສຳ ນວນປົກກະຕິ - ສັ້ນເທົ່າກັບ REGEX - ເຊິ່ງແມ່ນສາຍເຊືອກທີ່ເປັນເອກະລັກ ສຳ ລັບການອະທິບາຍຮູບແບບການຄົ້ນຫາ.

ຖ້າບໍ່ມີການໂຄສະນາຕໍ່ໄປ, ໃຫ້ທ່ານເຂົ້າໄປໃນ.

1. ຄຳ ສັ່ງ Grep

ການເຂົ້າມາເປັນອັນດັບ ທຳ ອິດແມ່ນເຄື່ອງມືປະໂຫຍດ grep - ແມ່ນ ຄຳ ສັບ ສຳ ລັບການພິມເອກະສານທົ່ວໄປທົ່ວໂລກ, ແມ່ນເຄື່ອງມືທີ່ມີລະບົບ ຄຳ ສັ່ງທີ່ມີປະສິດທິພາບທີ່ມີປະໂຫຍດໃນເວລາທີ່ຄົ້ນຫາສາຍສະເພາະຫລືແບບໃນເອກະສານ.

ເຮືອ Grep ພ້ອມດ້ວຍການແຈກແຈງ Linux ທີ່ທັນສະ ໄໝ ໂດຍຄ່າເລີ່ມຕົ້ນແລະຊ່ວຍໃຫ້ທ່ານມີຄວາມຍືດຫຍຸ່ນໃນການກັບຄືນຜົນການຄົ້ນຫາຕ່າງໆ ດ້ວຍ grep, ທ່ານສາມາດປະຕິບັດ ໜ້າ ທີ່ຫຼາຍຢ່າງເຊັ່ນ:

  • ຄົ້ນຫາເຊືອກຫລືແບບທີ່ກົງກັນໃນແຟ້ມເອກະສານ.
  • ຄົ້ນຫາເຊືອກຫລືແບບທີ່ກົງກັນໃນແຟ້ມເອກະສານ Gzipped.
  • ນັບ ຈຳ ນວນ ຄຳ ວ່າສາຍ.
  • ພິມ ໝາຍ ເລກສາຍທີ່ມີສາຍຫລືຮູບແບບ.
  • ຄົ້ນຫາຄືນ ໃໝ່ ສຳ ລັບສາຍຕ່າງໆໃນໄດເລກະທໍລີ.
  • ດຳ ເນີນການຄົ້ນຫາດ້ານຫຼັງ (ຕົວຢ່າງ: ສະແດງຜົນຂອງສາຍທີ່ບໍ່ກົງກັບເງື່ອນໄຂການຊອກຫາ).
  • ບໍ່ສົນໃຈກໍລະນີທີ່ລະອຽດອ່ອນເມື່ອຄົ້ນຫາສາຍຕ່າງໆ.

syntax ສຳ ລັບໃຊ້ ຄຳ ສັ່ງ grep ແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ:

$ grep pattern FILE

ຍົກຕົວຢ່າງ, ເພື່ອຄົ້ນຫາສາຍ ‘Linux‘ ໃນເອກະສານ, ເວົ້າວ່າ, ສະບາຍດີໃນຂະນະທີ່ບໍ່ສົນໃຈກັບຄວາມລະອຽດອ່ອນຂອງກໍລະນີ, ດຳ ເນີນການ ຄຳ ສັ່ງ:

$ grep -i Linux hello.txt

ເພື່ອໃຫ້ໄດ້ຕົວເລືອກເພີ່ມເຕີມທີ່ທ່ານສາມາດໃຊ້ກັບ grep, ພຽງແຕ່ອ່ານບົດຄວາມຂອງພວກເຮົາທີ່ຍົກຕົວຢ່າງຕົວຢ່າງ ຄຳ ສັ່ງ grep ທີ່ກ້າວ ໜ້າ ກວ່າ.

2. sed Command

Sed - ສັ້ນ ສຳ ລັບ Stream Editor - ແມ່ນອີກເຄື່ອງມືທີ່ມີ ຄຳ ສັ່ງທີ່ເປັນປະໂຫຍດ ສຳ ລັບການ ໝູນ ໃຊ້ຂໍ້ຄວາມໃນເອກະສານຂໍ້ຄວາມ. ການຊອກຫາແບບ Sed, ການກັ່ນຕອງແລະການປ່ຽນແທນສາຍໃນເອກະສານທີ່ໃຫ້ໃນແບບທີ່ບໍ່ມີການໂຕ້ຕອບ.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ຄຳ ສັ່ງ sed ພິມອອກຜົນໃຫ້ STDOUT (Standard Out), ໝາຍ ຄວາມວ່າຜົນຂອງການປະຕິບັດຈະຖືກພິມໃສ່ຢູ່ປາຍຍອດແທນທີ່ຈະຖືກເກັບໄວ້ໃນແຟ້ມ.

ຄຳ ສັ່ງ Sed ແມ່ນຖືກຮຽກຮ້ອງດັ່ງຕໍ່ໄປນີ້:

$ sed -OPTIONS command [ file to be edited ]

ຍົກຕົວຢ່າງ, ເພື່ອທົດແທນທຸກໆກໍລະນີຂອງ 'Unix' ກັບ 'Linux', ຂໍ ຄຳ ສັ່ງ:

$ sed 's/Unix/Linux' hello.txt

ຖ້າທ່ານຕ້ອງການປ່ຽນເສັ້ນທາງຜົນຜະລິດແທນທີ່ຈະພິມມັນຢູ່ປາຍທາງ, ໃຊ້ສັນຍານການປ່ຽນເສັ້ນທາງ (>) ດັ່ງທີ່ສະແດງ.

$ sed 's/Unix/Linux' hello.txt > output.txt

ຜົນໄດ້ຮັບຂອງ ຄຳ ສັ່ງຈະຖືກເກັບໄວ້ໃນແຟ້ມ output.txt ແທນທີ່ຈະຖືກພິມໃສ່ ໜ້າ ຈໍ.

ເພື່ອກວດເບິ່ງຕົວເລືອກເພີ່ມເຕີມທີ່ສາມາດໃຊ້ໄດ້, ອີກເທື່ອ ໜຶ່ງ ກວດເບິ່ງ ໜ້າ man.

$ man sed

3. Ack Command

Ack ແມ່ນເຄື່ອງມືທີ່ບັນຈຸ ຄຳ ສັ່ງທີ່ວ່ອງໄວແລະເຄື່ອນທີ່ໄດ້ຂຽນໃນ Perl. Ack ຖືກຖືວ່າເປັນການທົດແທນທີ່ເປັນມິດ ສຳ ລັບຜົນປະໂຫຍດຂອງ grep ແລະຜົນໄດ້ຮັບຈະສົ່ງຜົນໃຫ້ມີລັກສະນະເປັນຕາເບິ່ງ.

ຄຳ ສັ່ງ Ack ຄົ້ນຫາເອກະສານຫລືໄດເລກະທໍລີ ສຳ ລັບສາຍທີ່ບັນຈຸ ຄຳ ວ່າກົງກັບເງື່ອນໄຂການຊອກຫາ. ຫຼັງຈາກນັ້ນມັນຍົກໃຫ້ເຫັນສາຍເຊັກທີ່ກົງກັນໃນສາຍຕ່າງໆ.
Ack ມີຄວາມສາມາດໃນການ ຈຳ ແນກເອກະສານໂດຍອີງໃສ່ການຂະຫຍາຍເອກະສານຂອງພວກເຂົາ, ແລະໃນລະດັບໃດ ໜຶ່ງ, ເນື້ອໃນຢູ່ໃນແຟ້ມ.

syntax ຄຳ ສັ່ງ Ack:

$ ack [options] PATTERN [FILE...]
$ ack -f [options] [DIRECTORY...]

ຕົວຢ່າງ, ເພື່ອກວດສອບໄລຍະການຄົ້ນຫາ Linux, ດຳ ເນີນການ:

$ ack Linux hello.txt

ເຄື່ອງມືຄົ້ນຫາແມ່ນຂ້ອນຂ້າງສະຫຼາດແລະຖ້າບໍ່ມີເອກະສານຫລືໄດເລກະທໍລີທີ່ໃຫ້ໂດຍຜູ້ໃຊ້, ມັນຄົ້ນຫາໄດເລກະທໍລີແລະໄດເລກະທໍລີທີ່ຢູ່ໃນປະຈຸບັນ ສຳ ລັບຮູບແບບການຄົ້ນຫາ.

ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ບໍ່ມີເອກະສານຫລືໄດເລກະທໍລີທີ່ໄດ້ໃຫ້, ແຕ່ ack ໄດ້ກວດພົບເອກະສານທີ່ມີໂດຍອັດຕະໂນມັດແລະຄົ້ນຫາຮູບແບບທີ່ກົງກັນ.

$ ack Linux

ການຕິດຕັ້ງ ack ໃນລະບົບຂອງທ່ານ ດຳ ເນີນການ ຄຳ ສັ່ງ:

$ sudo apt install ack-grep    [On Debian/Ubuntu]
$ sudo dnf install ack-grep    [On CentOS/RHEL]

4. ຄຳ ສັ່ງ Awk

Awk ແມ່ນພາສາຂຽນແບບເຕັມຮູບແບບແລະຍັງເປັນເຄື່ອງມືການປະມວນຜົນຂໍ້ຄວາມແລະການຈັດການຂໍ້ມູນ. ມັນຄົ້ນຫາເອກະສານຫລືໂປແກຼມທີ່ມີຮູບແບບການຄົ້ນຫາ. ເມື່ອສາຍຫລືຮູບແບບຖືກຄົ້ນພົບ, ງຸ່ມງ່າມປະຕິບັດກັບການຈັບຄູ່ຫລືສາຍແລະພິມຜົນໃນ STDOUT.

ຮູບແບບ AWK ແມ່ນຖືກຫຸ້ມໄວ້ລະຫວ່າງເຊືອກຜູກໃນຂະນະທີ່ໂປແກມທັງ ໝົດ ຖືກຫຸ້ມໄວ້ໃນວົງຢືມດຽວ.

ໃຫ້ຍົກຕົວຢ່າງທີ່ງ່າຍທີ່ສຸດ. ສົມມຸດວ່າທ່ານ ກຳ ລັງພິມວັນທີຂອງລະບົບຂອງທ່ານດັ່ງທີ່ສະແດງ:

$ date

ສົມມຸດວ່າທ່ານພຽງແຕ່ຕ້ອງການພິມອອກຄ່າ ທຳ ອິດ, ເຊິ່ງແມ່ນມື້ຂອງອາທິດ. ໃນກໍລະນີດັ່ງກ່າວ, ທໍ່ຜົນຜະລິດເຂົ້າໄປໃນງຸ່ມງ່າມທີ່ສະແດງ:

$ date | awk '{print $1}'

ເພື່ອສະແດງຄຸນຄ່າຕໍ່ໆໄປ, ໃຫ້ແຍກພວກມັນໂດຍໃຊ້ເຄື່ອງ ໝາຍ ຈຸດດັ່ງທີ່ສະແດງ:

$ date | awk '{print $1,$2}'

ຄຳ ສັ່ງຂ້າງເທິງນີ້ຈະສະແດງມື້ຂອງອາທິດແລະວັນທີຂອງເດືອນ.

ເພື່ອໃຫ້ໄດ້ຮັບຕົວເລືອກເພີ່ມເຕີມທີ່ທ່ານສາມາດໃຊ້ກັບງຸ່ມງ່າມ, ພຽງແຕ່ອ່ານຊຸດ ຄຳ ສັ່ງງຸ່ມງ່າມຂອງພວກເຮົາ.

5. ນັກຄົ້ນຄວ້າເງິນ

ຜູ້ຄົ້ນຫາເງິນແມ່ນເຄື່ອງມືຄົ້ນຫາລະຫັດຂ້າມແລະເວບໄຊທ໌ open source ທີ່ຄ້າຍຄືກັບ ack ແຕ່ເນັ້ນ ໜັກ ໃສ່ຄວາມໄວ. ມັນເຮັດໃຫ້ທ່ານງ່າຍຕໍ່ການຄົ້ນຫາສາຍສະເພາະພາຍໃນແຟ້ມໃນເວລາທີ່ສັ້ນທີ່ສຸດເທົ່າທີ່ເປັນໄປໄດ້:

Syntax:

$ ag OPTIONS search_pattern /path/to/file

ຍົກຕົວຢ່າງ, ເພື່ອຄົ້ນຫາສາຍ ‘Linux’ ໃນເອກະສານ hello.txt ຂໍ ຄຳ ສັ່ງ:

$ ag Linux hello.txt

ສຳ ລັບຕົວເລືອກເພີ່ມເຕີມ, ເຂົ້າເບິ່ງທີ່ ໜ້າ man:

$ man ag

6. Ripgrep

ສຸດທ້າຍ, ພວກເຮົາມີເຄື່ອງມືເສັ້ນ ຄຳ ສັ່ງ ripgrep. Ripgrep ແມ່ນປະໂຫຍດຂ້າມເວທີ ສຳ ລັບການຄົ້ນຫາຮູບແບບ regex. ມັນໄວກ່ວາເຄື່ອງມືຄົ້ນຫາທີ່ກ່າວມາກ່ອນ ໜ້າ ນີ້ທັງ ໝົດ ແລະຄົ້ນຫາລາຍຊື່ການຊອກຫາແບບ ໃໝ່ ສຳ ລັບແບບທີ່ກົງກັນ ໃນແງ່ຂອງຄວາມໄວແລະການປະຕິບັດ, ບໍ່ມີເຄື່ອງມືອື່ນໃດທີ່ໂດດເດັ່ນວ່າ Ripgrep.

ໂດຍຄ່າເລີ່ມຕົ້ນ, ripgrep ຈະຂ້າມໄຟລ໌ໄບນາລີ/ແຟ້ມທີ່ເຊື່ອງໄວ້ແລະໄດເລກະທໍລີ. ນອກຈາກນີ້, ໃຫ້ ຄຳ ແນະ ນຳ ວ່າໃນຕອນຕົ້ນມັນຈະບໍ່ຄົ້ນຫາເອກະສານທີ່ຖືກລະເວັ້ນໂດຍ .gitignore/.ignore/.rgignore.

Ripgrep ຍັງຊ່ວຍໃຫ້ທ່ານຄົ້ນຫາປະເພດເອກະສານສະເພາະ. ຍົກຕົວຢ່າງ, ເພື່ອ ຈຳ ກັດການຄົ້ນຫາຂອງທ່ານໃນໄຟລ໌ Javascript ດຳ ເນີນການ:

$ rg -Tsj

syntax ສຳ ລັບການໃຊ້ ripgrep ແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ:

$ rg [OPTIONS] PATTERN [PATH...]

ຍົກຕົວຢ່າງ. ເພື່ອຄົ້ນຫາຕົວຢ່າງຂອງສາຍ 'Linux' ໃນແຟ້ມຕ່າງໆທີ່ຕັ້ງຢູ່ພາຍໃນໄດເລກະທໍລີປັດຈຸບັນ, ໃຫ້ ດຳ ເນີນການ ຄຳ ສັ່ງ:

$ rg Linux

ການຕິດຕັ້ງ ripgrep ໃນລະບົບຂອງທ່ານ ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້:

$ sudo apt install ripgrep      [On Debian/Ubuntu]
$ sudo pacman -S ripgrep        [On Arch Linux]
$ sudo zypper install ripgrep   [On OpenSuse]
$ sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

ສຳ ລັບຕົວເລືອກເພີ່ມເຕີມ, ເຂົ້າເບິ່ງທີ່ ໜ້າ man:

$ man rg

ນີ້ແມ່ນເຄື່ອງມືທີ່ໃຊ້ໃນການບັນຊາ ຄຳ ສັ່ງທີ່ໃຊ້ກັນຢ່າງກວ້າງຂວາງ ສຳ ລັບການຄົ້ນຫາ, ການກັ່ນຕອງແລະການ ໝູນ ໃຊ້ຂໍ້ຄວາມໃນ Linux ຖ້າທ່ານມີເຄື່ອງມືອື່ນທີ່ທ່ານຮູ້ສຶກວ່າພວກເຮົາອອກໄປ, ກະລຸນາແຈ້ງພວກເຮົາໃນສ່ວນ ຄຳ ເຫັນ.