Jak mogę dodać tekst do pliku przed konkretnym słowem z linii poleceń Linuksa?


2

Obecnie piszę skrypt, który automatycznie zmienia plik konfiguracyjny, w szczególności chcę umieścić „vfio vfio_iommu_type1 vfio_pci vfio_virqfd” (bez cudzysłowów) między nawiasami w MODULES = (). Chciałbym także wiedzieć, jak mogę go później usunąć z linii poleceń. MODULES znajduje się w pliku /etc/mkinitcpio.conf i jest w linii 7.

Odpowiedzi:


1

Lepiej podać nam przykład pliku /etc/mkinitcpio.conf.

Możesz użyć następującego polecenia, aby zmienić plik, zakładając, że istnieje tylko jedna instancja: ()

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

Aby go zmienić, wykonaj odwrotnie:

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

Zakładając, że istnieje wiele jego wystąpień, możesz wykonać następujące czynności:

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

7 to numer linii, w której pojawi się instancja, którą chcesz zmienić.


Dziękuję za informację, ale kiedy próbuję użyć polecenia bottom (ponieważ kiedy robię to pierwsze, robi to samo dla każdego wiersza tekstu z () na końcu), mówi, że jest błąd składniowy w pobliżu nieoczekiwanego tokena „(”.
Sol33t303

Odpowiedź została edytowana.
Nasir Riley


0

Zastąp używając:

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

I powróć z:

sed -i 's/MODULES=\(vfio vfio_iommu_type1 vfio_pci vfio_virqfd\)/MODULES=()/g' /etc/mkinitcpio.conf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.