Як я можу додати текст до файлу перед певним словом з командного рядка Linux?


2

Я зараз пишу сценарій, який автоматично змінює файл конфігурації, зокрема, я хочу поставити "vfio vfio_iommu_type1 vfio_pci vfio_virqfd" (без лапок) між дужками в модулях = (). Я також хотів би знати, як я можу видалити його пізніше з командного рядка. 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 буде числом рядка, де з'являється екземпляр, який ви бажаєте змінити.


Дякуємо за інформацію, але коли я намагаюся скористатися нижньою командою (тому що, коли я роблю верхню, вона робить те ж саме для кожного рядка тексту з () в кінці). '('.
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.