Cara memasukkan string ke dalam baris di file setelah kata kunci di bash

Aug 20 2020

Saya memiliki file dengan beberapa baris.

Lines.txt

value1
value2
value3

Dan saya ingin menambahkan baris dalam file ke file lain setelah kata kunci.

AnotherFile.txt

NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD SomeOtherStuff SomeOtherStuff

Saya pikir sedmemiliki apa yang saya butuhkan, tetapi saya mengalami masalah dalam mencari tahu cara memasukkan teks ke tengah baris.

Dan saya ingin hasil dari:

AnotherFile.txt

NotTheKeyWord SomeOtherStuff SomeOtherStuff
NotTheKeyWord THEKEYWORD value1 value2 value3 SomeOtherStuff SomeOtherStuff

Jawaban

1 0stone0 Aug 20 2020 at 21:19

Solusi sed murni :

sed -r "s:(THEKEYWORD):\1 $(sed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt

Dimana;

  • test.txtadalah nilai yang akan disisipkan, $(sed ':a;N;$!ba;s/\n/ /g' test.txt)menghapus setiap baris baru dari file, sehingga dapat disisipkan pada baris yang sama
  • insert.txtfile teks jika THEKEYWORDada

Jika Anda ingin mengganti file, gunakan -iopsi;

sed -i -r "s:(THEKEYWORD):\1 $(gsed ':a;N;$!ba;s/\n/ /g' test.txt) :g" insert.txt

Seperti yang ditunjukkan oleh @KamilCuk, use paste -sd ' ' test.txtbisa digunakan untuk menghapus baris baru, dan menyisipkan file;

sed -r "s:(THEKEYWORD):\1 $(paste -sd ' ' test.txt) :g" insert.txt

Output terminal + versi sed