Sto provando ad aggiungere una riga di testo al centro di un file di testo in uno script bash. Specificamente sto provando ad aggiungere un nameserver al mio file /etc/resolv.conf. Così com'è, resolv.conf assomiglia a questo:Come si aggiunge una riga di testo al centro di un file usando bash?
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Il mio obiettivo è quello di aggiungere nameserver 127.0.0.1
sopra tutte le altre linee di server dei nomi, ma al di sotto qualsiasi testo di sopra. Alla fine voglio il mio file resolve.conf a guardare come questo:
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
Come è possibile tramite uno script bash? È qualcosa che sed o awk può fare? O farebbe volentieri la creatività di ricreare il file?
questo è grande. L'unica cosa strana è aggiungere una riga vuota nella parte superiore del nuovo file. Non è un grosso problema, ma sta causando un momento OCD. – PHLAK
Oh, sì, hai ragione! Il comando 'sed -n 'H; $ {x; s/^ \ n //; s/nameserver. * \ N/nameserver 127.0.0.1 \ n & /; p;}' resolv.conf', tuttavia, risolve questo problema. Ho aggiunto 's/^ \ n //' al comando in modo da rimuovere il newline all'inizio del contenuto dello spazio pattern. – brandizzi
Fantastico, grazie! – PHLAK