ฉันจะเพิ่มข้อความลงในไฟล์หน้าคำที่ระบุจากบรรทัดคำสั่ง Linux ได้อย่างไร


2

ขณะนี้ฉันกำลังเขียนสคริปต์ที่เปลี่ยนไฟล์การกำหนดค่าโดยอัตโนมัติโดยเฉพาะฉันต้องการใส่ "vfio vfio_iommu_type1 vfio_pci vfio_virqfd" (โดยไม่ใส่เครื่องหมายอัญประกาศ) ระหว่างวงเล็บใน MODULES = () ฉันต้องการทราบวิธีลบในภายหลังจากบรรทัดคำสั่ง MODULES อยู่ในไฟล์ /etc/mkinitcpio.conf และอยู่ในบรรทัดที่ 7

คำตอบ:


1

เป็นการดีกว่าที่จะให้ตัวอย่างไฟล์ /etc/mkinitcpio.conf ของคุณกับเรา

คุณสามารถใช้คำสั่งต่อไปนี้เพื่อเปลี่ยนไฟล์โดยสมมติว่ามีเพียงหนึ่งอินสแตนซ์ของ: ()

sed -i 's/()/(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/g' /etc/mkinitcpio.conf

หากต้องการเปลี่ยนกลับเพียงทำตรงกันข้าม:

sed -i 's/(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/()/g' /etc/mkinitcpio.conf

สมมติว่ามีหลายอินสแตนซ์คุณสามารถทำสิ่งต่อไปนี้:

sed -i '7s/MODULES=\(\)/MODULES=(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/ /etc/mkinitcpio.conf

7 จะเป็นจำนวนบรรทัดที่อินสแตนซ์ที่คุณต้องการเปลี่ยนปรากฏขึ้น


ขอบคุณสำหรับข้อมูล แต่เมื่อฉันพยายามใช้คำสั่ง bottom (เพราะเมื่อฉันทำคำสั่งด้านบนมันเหมือนกันสำหรับทุกบรรทัดของข้อความด้วย () ตอนท้าย) มันบอกว่ามีข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด '('.
Sol33t303

คำตอบถูกแก้ไขแล้ว
Nasir Riley


0

แทนที่โดยใช้:

sed -i 's/MODULES=\(\)/MODULES=(vfio vfio_iommu_type1 vfio_pci vfio_virqfd)/g' /etc/mkinitcpio.conf

และย้อนกลับด้วย:

sed -i 's/MODULES=\(vfio vfio_iommu_type1 vfio_pci vfio_virqfd\)/MODULES=()/g' /etc/mkinitcpio.conf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.