Saya sedang mengerjakan skrip bash yang akan membagi konten dokumen teks tergantung pada data di baris tersebut.
Jika isi file asli berada di sepanjang baris
01 line
01 line
02 line
02 line
Bagaimana saya bisa menyisipkan ke baris 3 file ini menggunakan bash untuk menghasilkan
01 line
01 line
text to insert
02 line
02 line
Saya berharap untuk melakukan ini menggunakan heredoc atau sesuatu yang serupa dalam skrip saya
#!/bin/bash
vim -e -s ./file.txt <<- HEREDOC
:3 | startinsert | "text to insert\n"
:update
:quit
HEREDOC
Tentu saja di atas tidak berfungsi tetapi ada rekomendasi yang bisa saya terapkan ke dalam skrip bash ini?
shell-script
text-processing
TheLovelySosisage
sumber
sumber
Jawaban:
Anda dapat menggunakan Vim dalam mode Ex:
3
pilih jalur 3i
masukkan teks dan baris barux
tulis jika perubahan telah dibuat (sudah) dan keluarAtau dengan string yang cocok:
sumber
sed
akan menjadi pilihan tradisional (GNU sed mungkin memiliki bentuk yang lebih mudah daripada ini).Atau, karena sangat tradisional,
ed
(bonus! Sunting di tempat tanpased -i
formulir yang tidak dapat ditayangkan ).(Ini tidak ada hubungannya dengan
bash
)sumber
echo text to insert
olehcat file-to-insert.txt
echo
itu, Anda bisa menggunakanprintf '%s\n' 2 a 'text to insert' . wq
Bagaimana dengan sesuatu seperti:
sumber
sumber