Come inserire una stringa in una riga in un file dopo una parola chiave in bash
Aug 20 2020
Ho un file con alcune righe.
Lines.txt
value1
value2
value3
E vorrei aggiungere le righe del file in un altro file dopo una parola chiave.
AnotherFile.txt
NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD SomeOtherStuff SomeOtherStuff
Penso che sed
abbia ciò di cui ho bisogno, ma ho problemi a capire come inserire il testo al centro della riga.
E voglio il risultato di:
AnotherFile.txt
NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD value1 value2 value3 SomeOtherStuff SomeOtherStuff
Risposte
1 0stone0 Aug 20 2020 at 21:19
Una soluzione sed pura :
sed -r "s:(THEKEYWORD):\1 $(sed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt
Dove;
test.txt
è il valore da inserire,$(sed ':a;N;$!ba;s/\n/ /g' test.txt)
rimuove eventuali newline dal file, in modo che possa essere inserito sulla stessa rigainsert.txt
il file di testo doveTHEKEYWORD
esiste
Se desideri sostituire il file, utilizza l' -iopzione;
sed -i -r "s:(THEKEYWORD):\1 $(gsed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt
Come ha sottolineato @KamilCuk, using paste -sd ' ' test.txt
potrebbe essere utilizzato per rimuovere le nuove righe e inserire il file;
sed -r "s:(THEKEYWORD):\1 $(paste -sd ' ' test.txt) :g" insert.txt
Uscita terminale + versione sed