Como posso adicionar texto a um arquivo na frente de uma palavra específica da linha de comando do Linux?

2

Atualmente estou escrevendo um script que altera automaticamente um arquivo de configuração, especificamente, quero colocar "vfio vfio_iommu_type1 vfio_pci vfio_virqfd" (sem as aspas) entre os parênteses em MODULES = (). Eu também gostaria de saber como eu poderia removê-lo mais tarde da linha de comando. MODULES está no arquivo /etc/mkinitcpio.conf e está na linha 7.

    
por Sol33t303 12.01.2018 / 05:27

3 respostas

1

É melhor nos dar um exemplo de seu arquivo /etc/mkinitcpio.conf.

Você pode usar o seguinte comando para alterar o arquivo, supondo que haja apenas uma instância de: ()

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

Para alterá-lo de volta, faça o oposto:

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

Supondo que há várias ocorrências, você pode fazer o seguinte:

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

7 seria o número da linha em que a instância que você deseja alterar aparece.

    
por 12.01.2018 / 06:35
0

Você pode usar o comando sed que está pré-instalado no linux.

sed -i -e / MYWORD / HELLO FROM MYWORD / g 'myscript.sh

Mais exemplos: insira a descrição do link aqui

    
por 12.01.2018 / 15:38
0

Substituir usando:

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

E reverta com:

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