Sed: การเรียนรู้เชลล์สคริปต์โดยใช้คำสั่ง Sed Terminal

Sed: การเรียนรู้เชลล์สคริปต์โดยใช้คำสั่ง Sed Terminal

Sed: การเรียนรู้เชลล์สคริปต์โดยใช้คำสั่ง Sed Terminal

คำสั่ง "sed" ในระบบปฏิบัติการฟรีประเภท GNU / Linux เป็นคำสั่งที่หลากหลายมากเนื่องจากในทางกลับกัน ถือว่าเป็นโปรแกรมแก้ไขข้อความที่เน้น "โฟลว์" แทนที่จะเป็น "อินเทอร์แอกทีฟ" เหมือนแบบทั่วไปเนื่องจากยอมรับไฟล์หรืออินพุตมาตรฐานเป็นอินพุตจากนั้นประมวลผลแต่ละบรรทัดและผลลัพธ์จะถูกส่งไปยังเอาต์พุตมาตรฐาน กล่าวคือ, SED (Stream EDitor) ช่วยให้เราสามารถปรับเปลี่ยนเนื้อหาของบรรทัดต่างๆของไฟล์ตามชุดคำสั่งหรือไฟล์คำสั่ง

โดยทั่วไปคำสั่ง« sed »จะใช้เป็นตัวกรองเนื่องจากจะอ่านแต่ละบรรทัดของรายการข้อมูลของคุณจากนั้นจึงดำเนินการตามที่ร้องขอซึ่งโดยปกติจะอ่านแยกแก้ไขและแสดงหรือบันทึก แม้ว่าพลังของมันจะเป็นเช่นนั้นก็ตาม นอกจากนี้ยังช่วยให้เราสามารถลบเส้นบันทึกหรือแทนที่สตริงอักขระภายในบรรทัดของไฟล์ได้อย่างสะดวกสบาย

รู้เบื้องต้นเกี่ยวกับคำสั่ง "sed"

มีอยู่แล้วในสิ่งพิมพ์ก่อนหน้าอื่น ๆ ใน DesdeLinux เราได้พูดคุยและยกตัวอย่างการใช้คำสั่งดังกล่าวแล้วเช่น: วิธีลบบรรทัดเฉพาะออกจากไฟล์ ... y ด้วย Terminal: การใช้ Regular Expressions II: การเปลี่ยนดังนั้นในครั้งนี้เราจะเห็นขั้นสูงขึ้นเล็กน้อยและเป็นตัวอย่างที่ใช้งานได้จริง

โดยทั่วไปคำสั่ง« sed »มีไวยากรณ์ต่อไปนี้:

sed comandos_sed archivo

ที่ไหน "Command_sed" สอดคล้องกับข้อกำหนดอย่างน้อยหนึ่งข้อเกี่ยวกับสิ่งที่ต้องทำกับบรรทัดที่อ่าน "เก็บถาวร".

การใช้งานที่กว้างขวางมากขึ้นทำให้เรามีไวยากรณ์ต่อไปนี้:

sed [-ns] '[direccion] instruccion argumentos'

ที่อยู่:

รูปแบบการใช้คำสั่ง SED

ตัวอย่างการปฏิบัติ

แสดงรายการไฟล์ / โฟลเดอร์ในเส้นทาง

บรรทัดคำสั่งที่เป็นประโยชน์ซึ่งสามารถใช้เพื่อแสดงรายการเนื้อหาของเส้นทาง X ที่ระบุจากนั้นตรวจจับ / นับ / กรองรายการที่ค้นหาและระบุการดำเนินการที่จะดำเนินการในภายหลัง

ls -l | awk '{ print $NF }' | sed 1d

ตัวอย่าง:

ตัวอย่างที่ 1: คำสั่ง SED - เชลล์สคริปต์

ตัวแปรอื่นที่ใช้คำสั่ง "sed" มีประโยชน์มาก:

find /opt/MilagrOS/file-apps/fondos_pantalla/ -type f | sed 's/^\.\///g' | xargs -n 1 basename

ตัวอย่างที่ 4: คำสั่ง SED สำหรับเชลล์สคริปต์

สร้างลำดับตัวเลข

แสดงบนหน้าจอหรือบันทึกเป็นลำดับตัวเลข (หรืออินพุตอื่น ๆ ) ในไฟล์ที่สร้างขึ้น แต่ในแนวนอน (เชิงเส้น) และไม่ใช่รูปแบบแนวตั้งที่สามารถอ่านได้ในภายหลังสำหรับกระบวนการอื่น ๆ

seq 100|tr '\n' ' '|sed 's, $,\n,g'

ตัวอย่างที่ 2: คำสั่ง SED สำหรับเชลล์สคริปต์

ตัวอย่างเดียวกันสามารถทำได้โดยการรวมคำสั่ง«ความกระหายน้ำ" กับ "Printf" ดังแสดงด้านล่าง:

printf '%s ' {1..100}|sed 's/ $/\n/'

ตัวอย่างที่ 3: คำสั่ง SED สำหรับเชลล์สคริปต์

ลบไฟล์ที่มีการยกเว้น

การลอดผ่านเส้นทางระบบไฟล์เพื่อค้นหารูปแบบของไฟล์ที่จะแยกออกจากนั้นจึงลบเนื้อหาที่เหลือ มีประโยชน์มากสำหรับการทำความสะอาดที่แม่นยำและระมัดระวัง

find /opt/MilagrOS/file-apps/fondos_pantalla/ -type f | sed -e '/.*\.txt$/d' -e '/.*\.exe$/d' | xargs rm

ตัวอย่างที่ 5: คำสั่ง SED สำหรับ Shell_Scripting

สร้างที่อยู่ MAC เสมือน

ขั้นตอนนี้มีประโยชน์สำหรับงานด้านความปลอดภัยของคอมพิวเตอร์หรืองานป้องกันเมื่อเรียกดูไซต์อันตรายหรือทำงานแฮ็ก

MAC=`(date; cat /proc/interrupts) | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'` ; echo $MAC

เอฟเฟกต์เดียวกันนี้สามารถทำได้โดยใช้คำสั่ง "sed" ร่วมกับคำสั่งอื่น ๆ ดังที่แสดงด้านล่าง:

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
od -An -N10 -x /dev/random | md5sum | sed -r 's/^(.{10}).*$/\1/; s/([0-9a-f]{2})/\1:/g; s/:$//;'
od /dev/urandom -w6 -tx1 -An|sed -e 's/ //' -e 's/ /:/g'|head -n 1

ตัวอย่าง:

ตัวอย่างที่ 7: คำสั่ง SED สำหรับเชลล์สคริปต์

เปลี่ยนพรอมต์เทอร์มินัลชั่วคราว

สิ่งนี้สามารถช่วยเราในการแทรกพารามิเตอร์ชั่วคราวในพรอมต์ของเราซึ่งจะมีประโยชน์ในขณะที่เราดำเนินกิจกรรมพิเศษ ในตัวอย่างนี้เราจะเปลี่ยนวิธีแสดงข้อความแจ้งเท่านั้น

export PS1="C:\$( pwd | sed 's:/:\\\\\\:g' )\\> "

ตัวอย่าง 8. คำสั่ง SED สำหรับเชลล์สคริปต์

จัดการผลลัพธ์ของคำสั่ง "ps"

คำสั่งคำสั่งที่ใช้งานได้จริงมากเพื่อให้สามารถจัดรูปแบบเอาต์พุตของคำสั่ง« ps »นั่นคือสิ่งที่ได้รับจาก Terminal Process Manager

sudo ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed "/^ 0.0 /d"

ตัวอย่าง:

ตัวอย่างที่ 9: คำสั่ง SED สำหรับเชลล์สคริปต์

สามารถนำไปใช้กับกระบวนการตามเปอร์เซ็นต์ของหน่วยความจำที่ใช้:

sudo ps -e -o pmem,nice,state,cputime,args --sort pmem | sed "/^ 0.0 /d"

ตัวอย่างบรรทัดคำสั่งเหล่านี้โดยใช้คำสั่ง "sed" ฉันหวังว่าคุณจะพบว่ามีประโยชน์มาก และทำหน้าที่ใช้โดยตรงจากคอนโซลหรือทางอ้อมโดยการแทรกในสคริปต์ (งานอัตโนมัติ)

ในโพสต์ถัดไปเกี่ยวกับ Shell Scripting เราจะสำรวจคำสั่งอื่น ๆ

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง "sed" ไปที่ลิงค์นี้ "บทช่วยสอนและคำแนะนำโดยย่อสำหรับ Unix และ Linux"หรือ"การใช้งานพื้นฐาน»และหากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Shell Scripting ในบล็อกของเราเองคุณสามารถดูสิ่งพิมพ์อื่น ๆ ของเราในหัวข้อนี้ได้โดยคลิกที่นี่: การเขียนสคริปต์ DesdeLinux.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา