Misalkan Anda memiliki file
seperti ini:
one
two
Kemudian untuk menambahkan baris pertama:
$ sed '1 s_$_/etc/example/live/example.com/fullchain.pem;_' file
one/etc/example/live/example.com/fullchain.pem;
two
Untuk menyisipkan sebelum baris pertama:
$ sed '1 i /etc/example/live/example.com/fullchain.pem;' file
/etc/example/live/example.com/fullchain.pem;
one
two
Atau, untuk menambahkan setelah baris pertama:
$ sed '1 a /etc/example/live/example.com/fullchain.pem;' file
one
/etc/example/live/example.com/fullchain.pem;
two
Perhatikan angka 1
di sed
tersebut ekspresi - yang disebut alamat di sed
terminologi. Ini memberi tahu Anda di baris yang mana perintah berikut adalah mengoperasikan.
Jika file Anda tidak berisi baris yang Anda tuju, sed
perintah tidak akan dieksekusi. Itu sebabnya Anda tidak dapat menyisipkan/menambahkan pada baris 1, jika file Anda kosong.
Alih-alih menggunakan editor aliran , untuk menambahkan (untuk mengosongkan file), cukup gunakan pengalihan shell >>
:
echo "content" >> file
Masalah Anda berasal dari fakta bahwa sed
tidak dapat menemukan baris yang ingin Anda tulis, misalnya:
touch test
sed -i -e '1i/etc/example/live/example.com/fullchain.pem;\' test
mencoba menulis untuk menyisipkan pada baris 1 dari test
, tetapi garis itu tidak ada pada saat ini. Jika Anda telah membuat file sebagai:
echo -en "\n" > test
sed -i '1i/etc/example/live/example.com/fullchain.pem;\' test
itu tidak akan mengeluh, tetapi Anda akan memiliki jalur tambahan. Demikian pula, saat Anda menelepon:
sed -i "2i ssl_certificate_key /etc/example/live/example.com/privkey.pem;"
Anda memberi tahu sed
untuk menyisipkan data berikut pada baris 2 yang tidak ada pada saat itu jadi sed
tidak bisa mengedit file.
Jadi, untuk baris awal atau baris terakhir pada file, sebaiknya jangan menggunakan sed
karena >
sederhana dan >>
pengalihan aliran sudah lebih dari cukup.
Perintah Anda akan berfungsi jika Anda memastikan file input memiliki setidaknya satu baris:
[ "$(wc -l < test)" -gt 0 ] || printf '\n' >> test
sed -i -e '1 i/etc/example/live/example.com/fullchain.pem;\' test