ในบางครั้งเราจำเป็นต้องลบบรรทัดเฉพาะออกจากไฟล์หรือหลาย ๆ บรรทัดเช่นเกิดขึ้นกับฉันว่าฉันมีรายการไฟล์ทั้งหมดและฉันต้องลบบรรทัด # 27 ของทั้งหมดเหล่านี้ (บรรทัด # 27 คือของ ACL , บรรทัดฐาน, กฎ, การกำหนดค่า) ฉันสามารถแก้ไขไฟล์ทีละไฟล์หรือฉันสามารถบรรลุสิ่งที่ต้องการได้โดยใช้คำสั่ง ความกระหายน้ำ และสคริปต์ทุบตี (ไม่บังคับ)
แต่เรามาลองใช้ไฟล์เดียวกันบ้าง
เรามีไฟล์ distros-deb.txt ซึ่งประกอบด้วยสิ่งนี้:
เดเบียน
Kubuntu
ArchLinux
โซลัส
โรงกระษาปณ์
นั่นคือไฟล์ distros-deb.txt คือสิ่งที่เราจะใส่ Distros ที่ใช้ Debian แต่ที่นั่นเราเห็นว่าในบรรทัด # 3 คือ "archlinux" ซึ่งเป็น distro ที่เห็นได้ชัดว่าไม่มีอะไรเกี่ยวข้องกับ Debian ดังนั้นเราต้องกำจัดบรรทัดนั้นทิ้ง ในการกำจัดบรรทัด # 3 ของไฟล์นั้นเราจะใส่สิ่งต่อไปนี้:
sed "3d" distros-deb.txt > distros-deb-ok.txt
การอธิบายบรรทัดนี้ค่อนข้างง่ายด้วย กระหายน้ำ "3d" เรากำลังระบุว่าเราจะลบบรรทัด # 3 ด้วย distros-deb.txt เราระบุว่าจะใช้ไฟล์อะไรนั่นคือลบบรรทัด # 3 ของไฟล์นี้ถ้าเรากด Enter มัน จะแสดงสิ่งที่เราต้องการ แต่ในเทอร์มินัลดังนั้นด้วย > distros-deb-ok.txt เรากำลังระบุว่าแทนที่จะแสดงผลลัพธ์ในเทอร์มินัลให้ใส่ไว้ในไฟล์ที่มีชื่อนี้
อะไรง่ายๆ?
นอกจากนี้เราสามารถหลีกเลี่ยงการใช้ไฟล์ > distros-deb-ok.txt โดยใช้พารามิเตอร์ที่เหมาะสมของ ความกระหายน้ำพารามิเตอร์ -i
นั่นคือในกรณีที่เราต้องการลบบรรทัดออกจากไฟล์และบันทึกด้วยชื่อเดียวกัน (ไม่ใช่ในไฟล์อื่น) ให้เพิ่มพารามิเตอร์ -i :
sed -i "3d" distros-deb.txt
การดำเนินการนี้จะลบบรรทัด # 3 ออกจาก distros-deb.txt และบันทึก
จะเป็นอย่างไรถ้าฉันต้องการช่วงของบรรทัดนั่นคือการลบบรรทัด # 3 แต่ยังเป็น # 4 และ # 5 เพื่อให้บรรลุสิ่งนี้เราใส่ช่วงตั้งแต่ 3 ถึง 5 นั่นคือ:
sed -i "3,5d" distros-deb.txt
และมันจะแสดงให้ฉันเห็นเฉพาะ debian และ kubuntu 😀
แล้วถ้าฉันต้องการลบจากบรรทัดที่ 2 ไปยังบรรทัดสุดท้ายเมื่อฉันไม่ทราบจำนวนบรรทัดทั้งหมด?
เพียงใช้สัญลักษณ์ดอลลาร์ - » $
sed -i "2,$d" distros-deb.txt
ในกรณีที่คุณต้องการกำจัดจากบรรทัดแรกถึง # 4 เราก็ใส่ค่า 1 ที่จุดเริ่มต้น:
sed -i "1,4d" distros-deb.txt
นี่เป็นทุกอย่างเคล็ดลับที่มีประโยชน์มากเมื่อคุณต้องการสร้างสคริปต์ทุบตีเพื่อทำงานอัตโนมัติและคุณต้องแก้ไขและกำจัดบรรทัดของไฟล์การกำหนดค่าเพื่อแก้ไขเราสามารถใช้ได้ ความกระหายน้ำ o Perlเช่นเดียวกับการกำจัดเรารู้แล้วว่าต้องทำอย่างไรกับ sed 😉
ความนับถือ
ผลงานดีมาก😉
ขอขอบคุณ
เราได้รับอีเมลของคุณแล้วตอนนี้ฉันจะตอบคุณ😀
ความนับถือ
ในฐานะมหาปุโรหิตของเทอร์มินัลเซิร์ฟเวอร์และการเชื่อมต่อ ssh ฉันมาหาคุณโอ้เยี่ยมมาก KZKG ^ Gaara และฉันถามคุณ: ฉันจะรับบทช่วยสอนในระดับความไม่รู้ของฉันได้ที่ไหนที่ช่วยให้ฉันใช้การเชื่อมต่อ ssh ระหว่างเครื่องระยะไกลสองเครื่องในเครือข่ายที่แตกต่างกันเพื่อแบ่งปัน ไฟล์ข้อความ pdf ภาพและเสียง (mp3) ….
🙂
อย่างจริงจังคุณช่วยแนะนำฉันในเรื่องนี้ฉันมีสองเครื่องเครื่องหนึ่งที่ทำงานและอีกเครื่องที่บ้านและฉันต้องการการเชื่อมต่อ ssh ระหว่างกัน (เพราะตามที่ฉันเข้าใจ ssh อนุญาตให้แชร์เนื้อหาระหว่างเครื่องได้ใช่ไหม)
และถ้าฉันผิดคุณจะแนะนำแอปพลิเคชันใด
และฉันจะหาบทช่วยสอนพื้นฐานในเรื่องนี้ได้ที่ไหน?
scp
scp user @ machine_address: path user @ machine_address: path.
ไวยากรณ์เดียวกับ cp ต้นทาง -> ปลายทาง
คุณปรากฏตัวขึ้นคุณหลงทาง
เคล็ดลับดีๆ!
เคล็ดลับที่น่าสนใจ… xD
โดยบังเอิญคุณไม่รู้จักคนที่ทำให้ข้อความตัวหนาโดดเด่น?
ฉันหมายความว่าฉันมีไฟล์ txt ที่เป็นพจนานุกรมมันมีมากกว่า 10000 บรรทัดและฉันต้องการให้มันเน้นข้อความบางอย่างก่อนที่จุดระงับ ":" และทำทีละรายการมากเกินไป
สวัสดี
ไฟล์ txt เป็นข้อความธรรมดาตามชื่อที่แสดงถึง ... ธรรมดาไม่มีรูปแบบหรืออะไรที่คล้ายกันฉันขอโทษ แต่ฉันไม่คิดว่าสิ่งที่คุณถามจะทำได้หรือไม่? 🙁
ความนับถือ
ทำได้จริง แต่คุณต้องรู้รูปแบบปลายทาง
เช่น:
echo $ (echo "Robert: สวัสดีเปลี่ยนที่นี่" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
มันเป็นเรื่องของการเดินทางโดย
วิธีอื่นในการลบที่สามารถใช้ได้คือ sed '/' $ 1 '/ d' แต่คุณต้องแน่ใจว่า re
จากนั้นบันทึกใน * .odt
ไม่มีวิธีที่ง่ายกว่าในการใช้ LibreOffice หรือไม่?
คุณช่วยลบบางส่วนของบรรทัดและออกจากส่วนที่เหลือได้ไหม
สมมติว่าฉันต้องการลบทุกอย่างที่อยู่หน้าคำในแถวหนึ่ง
หรือลบทุกอย่างที่เป็นไปตามคำนั้น.
ใช่มันเป็นเรื่องของการดึงนิพจน์ทั่วไป (ถ้าจำเป็น man sed -r, –regexp-Extended)
เริ่มต้นจากสิ่งที่ฉันพบ
echo « Robert: สวัสดี เปลี่ยนที่นี่» | sed 's / เปลี่ยน //'
ด้วยรูปแบบที่กำหนดไว้อย่างดีและด้วย (หนึ่งอักขระ) และ * (มากกว่าหนึ่งตัว)
แล้ว:
echo « Robert: สวัสดี เปลี่ยนที่นี่» | sed 's / เปลี่ยน. * //'
ก่อน:
echo « Robert: สวัสดี เปลี่ยนที่นี่» | sed 's /. * เปลี่ยน //'
หากเป็นเรื่องสำคัญที่คำนั้นปรากฏ
echo « Robert: สวัสดี เปลี่ยนที่นี่» | sed 's / เปลี่ยน. * / เปลี่ยน /'
หรือซับซ้อนมากขึ้น
ในบรรทัดที่มี Robert สิ่งที่เกิดขึ้นหลังจากการเปลี่ยนแปลง
echo -e « Fritz: สวัสดี เปลี่ยนที่นี่ \ n โรเบิร์ต: สวัสดี เปลี่ยนที่นี่» | sed '/Robert/s/Cambio.*//'
หรือเหมือนตอนเริ่มต้นให้ดึงบรรทัดที่สองออกแล้วประมวลผลส่วนที่เหลือ
echo -e « Fritz: สวัสดี เปลี่ยนที่นี่ \ n โรเบิร์ต: สวัสดี เปลี่ยนที่นี่ \ n อื่น ๆ » | sed -e 2d -e 's / เปลี่ยน. * //'
echo -e « Fritz: สวัสดี เปลี่ยนที่นี่ \ n โรเบิร์ต: สวัสดี เปลี่ยนที่นี่ \ n อื่น ๆ » | sed '2d; s / เปลี่ยน. * //'
ขอบคุณมันมีประโยชน์มากสำหรับฉัน
บทความที่ดีที่ฉันชอบ SysAdmin ดีแค่ไหน!
ชีวิตของเราจะเป็นอย่างไรหากปราศจาก Sed, awek, Perl, grep, tail, head, "Emacs" และเครื่องมือสำคัญอื่น ๆ อีกมากมาย!?
ขอบคุณข้อมูลนี้มีประโยชน์มาก
สวัสดีคุณจะลบบรรทัด 1,4 และ 10 ออกจากไฟล์ในคำสั่งเดียวกันได้อย่างไร?