LFCS: ວິທີການ ນຳ ໃຊ້ GNU sed Command ເພື່ອສ້າງ, ແກ້ໄຂແລະລອກເອົາໄຟລ໌ໃນ Linux - ພາກທີ 1


Linux Foundation ໄດ້ປະກາດໃບຢັ້ງຢືນ LFCS (Linux Foundation Certified Sysadmin) ໃບຢັ້ງຢືນ, ເປັນໂຄງການ ໃໝ່ ທີ່ມີຈຸດປະສົງເພື່ອຊ່ວຍໃຫ້ບຸກຄົນທົ່ວໂລກໄດ້ຮັບໃບຢັ້ງຢືນໃນຂັ້ນພື້ນຖານເຖິງລະດັບປານກາງວຽກງານການບໍລິຫານລະບົບ ສຳ ລັບລະບົບ Linux. ນີ້ປະກອບມີການສະ ໜັບ ສະ ໜູນ ລະບົບແລະການບໍລິການທີ່ແລ່ນພ້ອມກັບການແກ້ໄຂບັນຫາແລະການວິເຄາະດ້ວຍຕົນເອງແລະການຕັດສິນໃຈທີ່ສະຫຼາດເພື່ອຍົກບັນຫາໃຫ້ກັບບັນດາທີມວິສະວະ ກຳ.

ກະລຸນາເບິ່ງວິດີໂອຕໍ່ໄປນີ້ເຊິ່ງສະແດງໃຫ້ເຫັນກ່ຽວກັບໂປແກຼມການຢັ້ງຢືນມູນນິທິ Linux.

ຊຸດດັ່ງກ່າວຈະມີຊື່ວ່າການກະກຽມ ສຳ ລັບ LFCS (Linux Foundation Certified Sysadmin) ພາກ 1 ເຖິງ 10 ແລະກວມເອົາຫົວຂໍ້ຕໍ່ໄປນີ້ ສຳ ລັບ Ubuntu, CentOS, ແລະ openSUSE:

ການໂພດນີ້ແມ່ນພາກ 1 ຂອງຊຸດ 20-tutorial ເຊິ່ງຈະກວມເອົາໂດເມນແລະທັກສະທີ່ ຈຳ ເປັນ ສຳ ລັບການສອບເສັງການຢັ້ງຢືນ LFCS. ນັ້ນແມ່ນການເວົ້າ, ເຮັດໃຫ້ທ່ານສິ້ນສຸດລົງ, ແລະໃຫ້ເລີ່ມຕົ້ນ.

ການປະມວນຜົນກະແສຂໍ້ຄວາມໃນ Linux

Linux ປະຕິບັດຕໍ່ກັບການປ້ອນຂໍ້ມູນເຂົ້າແລະຜົນໄດ້ຮັບຈາກໂປແກຼມຕ່າງໆເປັນສາຍນ້ ຳ (ຫລື ລຳ ດັບ) ຂອງຕົວອັກສອນ. ເພື່ອເລີ່ມຕົ້ນເຂົ້າໃຈການປ່ຽນເສັ້ນທາງແລະທໍ່, ພວກເຮົາຕ້ອງເຂົ້າໃຈສາມປະເພດທີ່ ສຳ ຄັນທີ່ສຸດຂອງສາຍນ້ ຳ I/O (Input and Output), ເຊິ່ງໃນຄວາມເປັນຈິງແລ້ວມີເອກະສານພິເສດ (ໂດຍສົນທິສັນຍາໃນ UNIX ແລະ Linux, ກະແສຂໍ້ມູນແລະອຸປະກອນເສີມ, ຫຼືໄຟລ໌ອຸປະກອນ, ຍັງຖືກປະຕິບັດເປັນເອກະສານ ທຳ ມະດາ).

ຄວາມແຕກຕ່າງລະຫວ່າງ > (ຕົວປະຕິບັດການປ່ຽນເສັ້ນທາງ) ແລະ | (ຜູ້ປະຕິບັດການທໍ່) ແມ່ນວ່າໃນຂະນະທີ່ ທຳ ອິດເຊື່ອມຕໍ່ ຄຳ ສັ່ງກັບແຟ້ມ, ສຸດທ້າຍກໍ່ເຊື່ອມຕໍ່ຜົນຜະລິດຂອງ ຄຳ ສັ່ງກັບອີກ ຄຳ ສັ່ງ.

# command > file
# command1 | command2

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

ສຳ ລັບບົດຝຶກຫັດປະຕິບັດຕໍ່ໄປນີ້ພວກເຮົາຈະໃຊ້ບົດກະວີ“ ເດັກທີ່ມີຄວາມສຸກ ” (ຜູ້ຂຽນບໍ່ລະບຸຊື່).

ຊື່ sed ແມ່ນສັ້ນ ສຳ ລັບບັນນາທິການກະແສ. ສຳ ລັບຜູ້ທີ່ບໍ່ຄຸ້ນເຄີຍກັບ ຄຳ ສັບນີ້, ບັນນາທິການສາຍນ້ ຳ ໄດ້ຖືກ ນຳ ໃຊ້ເພື່ອ ດຳ ເນີນການປ່ຽນແປງຕົວ ໜັງ ສືຂັ້ນພື້ນຖານໃນກະແສ ນຳ ເຂົ້າ (ເອກະສານຫລືວັດສະດຸປ້ອນຈາກທໍ່).

ການໃຊ້ sed ໂດຍພື້ນຖານທີ່ສຸດ (ແລະນິຍົມ) ແມ່ນການປ່ຽນແທນຕົວອັກສອນ. ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການປ່ຽນທຸກໆເຫດການທີ່ເກີດຂື້ນຂອງຕົວອັກສອນນ້ອຍ y ໄປທີ່ UPPERCASE Y ແລະປ່ຽນທິດທາງຜົນຜະລິດໃຫ້ ahappychild2.txt . ທຸງ g ຊີ້ໃຫ້ເຫັນວ່າ sed ຄວນປະຕິບັດການທົດແທນ ສຳ ລັບທຸກໆກໍລະນີຂອງ ຄຳ ສັບໃນທຸກໆເສັ້ນຂອງເອກະສານ. ຖ້າທຸງນີ້ຖືກຍົກເລີກ, sed ຈະປ່ຽນແທນ ຄຳ ສັບທີ່ເກີດຂື້ນຄັ້ງ ທຳ ອິດໃນແຕ່ລະເສັ້ນ.

# sed ‘s/term/replacement/flag’ file
# sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

ຖ້າທ່ານຕ້ອງການຄົ້ນຫາຫຼືປ່ຽນແທນຕົວອັກສອນພິເສດ (ເຊັ່ນ: /, \, & ) ທ່ານ ຈຳ ເປັນຕ້ອງ ໜີ ອອກຈາກມັນ, ໃນໄລຍະ ຫຼືສາຍປ່ຽນແທນ, ດ້ວຍການຖອຍຫລັງ.

ຍົກຕົວຢ່າງ, ພວກເຮົາຈະປ່ຽນແທນ ຄຳ ສັບແລະ ສຳ ລັບເຄື່ອງ ອຳ ມະພາດ. ໃນເວລາດຽວກັນ, ພວກເຮົາຈະປ່ຽນ ຄຳ ສັບທີ່ ຂ້ອຍ ໂດຍ ເຈົ້າ ເມື່ອພົບ ຄຳ ທຳ ອິດໃນຕອນຕົ້ນຂອງເສັ້ນ.

# sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

ໃນ ຄຳ ສັ່ງຂ້າງເທິງນີ້, ^ (ໝາຍ ເຫດການເບິ່ງແຍງ) ແມ່ນ ສຳ ນວນປົກກະຕິທີ່ມີຊື່ສຽງເຊິ່ງຖືກ ນຳ ໃຊ້ເພື່ອສະແດງຈຸດເລີ່ມຕົ້ນຂອງເສັ້ນ.

ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້, ພວກເຮົາສາມາດປະສົມສອງ ຄຳ ຫຼື ຄຳ ສັ່ງແທນແທນ (ແລະໃຊ້ ສຳ ນວນປົກກະຕິພາຍໃນພວກມັນ) ໂດຍການແຍກພວກມັນດ້ວຍ ຄຳ ສັ່ງແລະໃສ່ຊຸດທີ່ຢູ່ໃນວົງຢືມດຽວ.

ການໃຊ້ sed ອື່ນແມ່ນການສະແດງ (ຫລືລຶບ) ສ່ວນທີ່ເລືອກຂອງແຟ້ມ. ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ພວກເຮົາຈະສະແດງ 5 ສາຍ ທຳ ອິດຂອງ /var/log/ຂໍ້ຄວາມ ຈາກ Jun 8.

# sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

ໃຫ້ສັງເກດວ່າໂດຍຄ່າເລີ່ມຕົ້ນ, sed ພິມທຸກໆເສັ້ນ. ພວກເຮົາສາມາດປະຕິເສດການກະ ທຳ ນີ້ດ້ວຍທາງເລືອກ -n ແລະຫຼັງຈາກນັ້ນບອກ sed ໃຫ້ພິມ (ສະແດງໂດຍ ໜ້າ ) ພຽງແຕ່ສ່ວນ ໜຶ່ງ ຂອງເອກະສານ (ຫລືທໍ່) ທີ່ກົງກັບຮູບແບບ (ມິຖຸນາ 8 ໃນຕອນຕົ້ນຂອງສາຍໃນກໍລະນີ ທຳ ອິດແລະສາຍ 1 ເຖິງ 5 ລວມໃນກໍລະນີທີສອງ).

ສຸດທ້າຍ, ມັນສາມາດເປັນປະໂຫຍດໃນຂະນະທີ່ກວດກາສະຄິບຫລືເອກະສານການຕັ້ງຄ່າເພື່ອກວດກາລະຫັດຕົວມັນເອງແລະອອກ ຄຳ ເຫັນ. ເສັ້ນທາງລຸ່ມນີ້ຍົກເລີກເສັ້ນດ່ຽວ ( d ) ຕໍ່ໄປນີ້ຫຼືເສັ້ນທີ່ເລີ່ມຕົ້ນດ້ວຍ # (ຕົວອັກສອນ | ສະແດງວ່າມີເຫຼົ້າຫຼືລະຫວ່າງສອງປົກກະຕິ) ສຳ ນວນ).

# sed '/^#\|^$/d' apache2.conf

ຄຳ ສັ່ງ uniq ຊ່ວຍໃຫ້ພວກເຮົາລາຍງານຫຼືລຶບບັນດາແຖວໃນແຟ້ມເອກະສານ, ຂຽນເປັນ stdout ໂດຍຄ່າເລີ່ມຕົ້ນ. ພວກເຮົາຕ້ອງສັງເກດວ່າ uniq ບໍ່ກວດພົບສາຍທີ່ຊ້ ຳ ຊ້ອນກັນເວັ້ນເສຍແຕ່ວ່າພວກມັນຢູ່ຕິດກັນ. ດັ່ງນັ້ນ, uniq ຖືກ ນຳ ໃຊ້ທົ່ວໄປພ້ອມກັບ ຈັດລຽງ ລຳ ດັບ (ເຊິ່ງໃຊ້ເພື່ອຈັດຮຽງແຖວຂອງແຟ້ມຂໍ້ຄວາມ). ໂດຍຄ່າເລີ່ມຕົ້ນ, ຄັດ ເອົາພາກສະ ໜາມ ທຳ ອິດ (ແຍກເປັນຊ່ອງຫວ່າງ) ເປັນບ່ອນ ສຳ ຄັນ. ເພື່ອ ກຳ ນົດພາກສະຫນາມທີ່ແຕກຕ່າງກັນ, ພວກເຮົາຕ້ອງໃຊ້ຕົວເລືອກ -k .

ຄຳ ສັ່ງ du –sch/path/to/directory/* ສົ່ງຄືນການ ນຳ ໃຊ້ພື້ນທີ່ດິດໃນແຟ້ມເອກະສານຍ່ອຍແລະແຟ້ມທີ່ຢູ່ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້ໃນຮູບແບບທີ່ຄົນສາມາດອ່ານໄດ້ ສັ່ງຊື້ຜົນຜະລິດຕາມຂະ ໜາດ, ແຕ່ໂດຍ subdirectory ແລະຊື່ file. ພວກເຮົາສາມາດໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອຈັດຮຽງຕາມຂະ ໜາດ.

# du -sch /var/* | sort –h

ທ່ານສາມາດນັບ ຈຳ ນວນເຫດການໃນບັນທຶກໂດຍວັນທີໂດຍບອກ uniq ເພື່ອ ດຳ ເນີນການປຽບທຽບໂດຍໃຊ້ 6 ຕົວອັກສອນ ທຳ ອິດ (-w 6) ຂອງແຕ່ລະເສັ້ນ (ບ່ອນທີ່ວັນທີໄດ້ລະບຸ), ແລະ ນຳ ໜ້າ ແຕ່ລະ ໜ້າ ເສັ້ນຜົນຜະລິດຕາມ ຈຳ ນວນເຫດການທີ່ເກີດຂື້ນ ( -c ) ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

# cat /var/log/mail.log | uniq -c -w 6

ສຸດທ້າຍ, ທ່ານສາມາດສົມທົບ ຈັດລຽງລໍາດັບ ແລະ uniq (ຕາມປົກກະຕິ). ພິຈາລະນາເອກະສານຕໍ່ໄປນີ້ທີ່ມີລາຍຊື່ຜູ້ໃຫ້ທຶນ, ວັນທີບໍລິຈາກແລະ ຈຳ ນວນເງິນ. ສົມມຸດວ່າພວກເຮົາຢາກຮູ້ວ່າມີຈັກຄົນທີ່ເປັນເອກະລັກຂອງຜູ້ໃຫ້ທຶນ. ພວກເຮົາຈະໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອຕັດພາກສະ ໜາມ ທຳ ອິດ (ທົ່ງນາທີ່ຖືກ ກຳ ນົດໂດຍຈໍ້າສອງເມັດ), ຈັດຮຽງຕາມຊື່ແລະຖອດສາຍທີ່ຊ້ ຳ ກັນ.

# cat sortuniq.txt | cut -d: -f1 | sort | uniq

ອ່ານຍັງ : 13 ຕົວຢ່າງ ຄຳ ສັ່ງ“ ແມວ”

grep ຄົ້ນຫາເອກະສານຂໍ້ຄວາມຫຼື (ຜົນຜະລິດ ຄຳ ສັ່ງ) ສຳ ລັບການປະກົດຕົວຂອງ ຄຳ ເວົ້າທີ່ປົກກະຕິແລະ ກຳ ນົດເສັ້ນໃດ ໜຶ່ງ ທີ່ບັນຈຸ ຄຳ ວ່າຜົນຜະລິດຕາມມາດຕະຖານ.

ສະແດງຂໍ້ມູນຈາກ /etc/passwd ສຳ ລັບຜູ້ໃຊ້ gacanepa, ບໍ່ສົນໃຈກໍລະນີ.

# grep -i gacanepa /etc/passwd

ສະແດງທຸກເນື້ອໃນຂອງ /etc ທີ່ມີຊື່ເລີ່ມຕົ້ນດ້ວຍ rc ຕິດຕາມດ້ວຍເບີດຽວ.

# ls -l /etc | grep rc[0-9]

ອ່ານຍັງ : 12 ຕົວຢ່າງ ຄຳ ສັ່ງ“ grep”

ຄຳ ສັ່ງ tr ສາມາດໃຊ້ເພື່ອແປ (ປ່ຽນແປງ) ຫຼືລຶບຕົວອັກສອນຈາກ stdin, ແລະຂຽນຜົນລັບໃຫ້ stdout.

ປ່ຽນຕົວນ້ອຍທຸກໂຕເປັນ uppercase ໃນໄຟລ໌ sortuniq.txt.

# cat sortuniq.txt | tr [:lower:] [:upper:]

ບີບຂອບເຂດ ຈຳ ກັດໃນຜົນຜະລິດຂອງ ລີດ l ພຽງແຕ່ຊ່ອງດຽວເທົ່ານັ້ນ.

# ls -l | tr -s ' '

ຄຳ ສັ່ງ ຕັດ ສະກັດບາງສ່ວນຂອງສາຍການປ້ອນຂໍ້ມູນ (ຈາກ stdin ຫຼືແຟ້ມ) ແລະສະແດງຜົນຕາມຜົນໄດ້ຮັບຕາມມາດຕະຖານ, ອີງຕາມ ຈຳ ນວນໄບຕ໌ ( -b ທາງເລືອກ), ຕົວອັກສອນ (< b> -c ), ຫຼືທົ່ງນາ ( -f ). ໃນກໍລະນີສຸດທ້າຍນີ້ (ໂດຍອີງໃສ່ທົ່ງນາ), ຕົວແຍກພາກສະ ໜາມ ແບບເລີ່ມຕົ້ນແມ່ນແທັບ, ແຕ່ຕົວ ກຳ ນົດຂອບເຂດທີ່ແຕກຕ່າງກັນສາມາດລະບຸໄດ້ໂດຍການໃຊ້ຕົວເລືອກ -d .

ສະກັດບັນຊີຜູ້ໃຊ້ແລະໄຍເລີ່ມຕົ້ນທີ່ຖືກມອບ ໝາຍ ໃຫ້ພວກເຂົາຈາກ /etc/passwd (ທາງເລືອກ d ຊ່ວຍໃຫ້ພວກເຮົາ ກຳ ນົດເຂດ ຈຳ ກັດພາກສະ ໜາມ, ແລະ –f ສະຫຼັບສະແດງວ່າພາກສະ ໜາມ ໃດຈະຖືກດຶງອອກມາ.

# cat /etc/passwd | cut -d: -f1,7

ສະຫຼຸບໂດຍຫຍໍ້, ພວກເຮົາຈະສ້າງກະແສຂໍ້ຄວາມທີ່ປະກອບດ້ວຍແຟ້ມຂໍ້ຄວາມ ທຳ ອິດແລະທີສາມທີ່ບໍ່ແມ່ນຂໍ້ມູນຂອງຜົນຜະລິດຂອງ ຄຳ ສັ່ງ ສຸດທ້າຍ . ພວກເຮົາຈະໃຊ້ grep ເປັນຕົວກອງ ທຳ ອິດເພື່ອກວດສອບການໃຊ້ງານຂອງຜູ້ໃຊ້ gacanepa , ຫຼັງຈາກນັ້ນບີບຂອບເຂດ ຈຳ ກັດໃຫ້ພຽງແຕ່ຊ່ອງດຽວເທົ່ານັ້ນ ( tr -s '' ). ຕໍ່ໄປ, ພວກເຮົາຈະສະກັດເອົາທົ່ງນາ ທຳ ອິດແລະທີສາມດ້ວຍ ຕັດ , ແລະສຸດທ້າຍຈັດຮຽງຕາມຊ່ອງຂໍ້ມູນທີສອງ (ທີ່ຢູ່ IP ໃນກໍລະນີນີ້) ສະແດງໃຫ້ເຫັນເອກະລັກ.

# last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

ຄຳ ສັ່ງຂ້າງເທິງສະແດງໃຫ້ເຫັນວ່າ ຄຳ ສັ່ງແລະທໍ່ຫຼາຍທໍ່ສາມາດລວມເຂົ້າກັນແນວໃດເພື່ອໃຫ້ໄດ້ຂໍ້ມູນທີ່ຖືກກັ່ນຕອງຕາມຄວາມຕ້ອງການຂອງພວກເຮົາ. ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະດໍາເນີນການມັນໂດຍພາກສ່ວນຕ່າງໆ, ເພື່ອຊ່ວຍໃຫ້ທ່ານເຫັນຜົນຜະລິດທີ່ຖືກສົ່ງຈາກຄໍາສັ່ງຫນຶ່ງໄປຫາຄໍາສັ່ງຕໍ່ໄປ (ນີ້ສາມາດເປັນປະສົບການການຮຽນຮູ້ທີ່ດີ, ໂດຍທາງ!).

ບົດສະຫຼຸບ

ເຖິງແມ່ນວ່າຕົວຢ່າງນີ້ (ພ້ອມກັບຕົວຢ່າງອື່ນໆທີ່ຢູ່ໃນບົດສອນໃນປະຈຸບັນ) ເບິ່ງຄືວ່າບໍ່ມີປະໂຫຍດຫລາຍໃນຕອນ ທຳ ອິດ, ແຕ່ມັນເປັນຈຸດເລີ່ມຕົ້ນທີ່ດີທີ່ຈະເລີ່ມທົດລອງໃຊ້ກັບ ຄຳ ສັ່ງທີ່ໃຊ້ໃນການສ້າງ, ແກ້ໄຂແລະຈັດການແຟ້ມເອກະສານຈາກ Linux ເສັ້ນຄໍາສັ່ງ. ຮູ້ສຶກບໍ່ເສຍຄ່າທີ່ຈະອອກ ຄຳ ຖາມແລະ ຄຳ ເຫັນຂອງທ່ານຂ້າງລຸ່ມນີ້ - ພວກມັນຈະໄດ້ຮັບການຍົກຍ້ອງຫຼາຍ!

< ກ່ຽວກັບ LFCS

  • ເປັນຫຍັງຈຶ່ງຕ້ອງໄດ້ຮັບໃບຢັ້ງຢືນມູນລະນິທິ Linux?
  • ລົງທະບຽນເຂົ້າສອບເສັງ LFCS