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 sed
memiliki 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.txt
adalah 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 samainsert.txt
file teks jikaTHEKEYWORD
ada
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.txt
bisa digunakan untuk menghapus baris baru, dan menyisipkan file;
sed -r "s:(THEKEYWORD):\1 $(paste -sd ' ' test.txt) :g" insert.txt
Output terminal + versi sed
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat