Berikut metode penyisipan file untuk sed
digunakan agar dapat berfungsi, bahkan sebelum baris terakhir, tetapi tidak lagi. Apakah ini bug saat ini sed
?
Demo memasukkan metode file dengan sed:
mkdir /tmp/test
printf '%s\n' {1..3} > /tmp/test/f1
printf '%s\n' {one,two,three,four,five,six,seven,eight,nine,ten} > /tmp/test/f2
$ cat /tmp/test/f2 | sed -e "/nine/r /tmp/test/f1" -e //N
one
two
three
four
five
six
seven
eight
1
2
3
nine
ten
$ head -9 /tmp/test/f2 | sed -e "/nine/r /tmp/test/f1" -e //N
one
two
three
four
five
six
seven
eight
nine
1
2
3
$ cat /tmp/test/f2 | sed -e "/ten/r /tmp/test/f1" -e //N
one
two
three
four
five
six
seven
eight
nine
ten
1
2
3
$ sed --version
GNU sed version 4.2.1
...
Yaitu, memasukkan file sebelum metode garis bekerja di mana-mana kecuali baris terakhir. Dulu bekerja sebelumnya. Apakah ini bug saat ini sed
?
Terima kasih
awk
atauperl
, tetapi hanya ingin tahu, yang merupakan versi kerja sebelumnya?$ echo -e 'one\ntwo\nthree\nfour' | sed -e '/three/r ./f1'
</body>
' sebagai yang terakhir kali. Contohnya sajaJawaban:
Karena Anda aktif,
gnu sed
Anda dapat menggunakannyapada
$
baris pertama:Dengan
ed
(ganti,p
denganw
jika Anda ingin mengedit di tempat):atau
Ketika
ed
membacafile
alamat saat ini diatur ke$
baris pertama.-
(atau-1
) mengatur alamat saat ini ke satu baris sebelum (yaitu$-1
) danr
membacainsert.txt
setelah baris saat ini.,p
mencetak konten buffer teks (seperti yang saya katakan, ganti denganw
untuk menyimpan perubahan) danq
keluar dari editor.sumber
sed '$e cat /tmp/test/f1' /tmp/test/f2
menggunakan file yang diberikan dalam OP). Terima kasih!Menurut komentar Anda, "HARUS cocok dengan baris terakhir ", jadi saya akan mempertimbangkan untuk menggunakan
$
(baris terakhir) dani
(masukkan perintah) dised
. Sebagai contoh:Pastikan saja file tersebut tidak memiliki baris kosong sebagai baris terakhir dan itu akan berfungsi. Perhatikan jarak antara tanda dolar dan tanda
i
garis miring terbalik (\
) setelah tandai
. Ini akan memasukkan teks setelah garis miring terbalik ke baris terakhir tanpa perlu/pattern/
untuk baris terakhir.CATATAN: Perintah ini hanya akan menambahkan satu baris teks sebelum baris terakhir, bukan file. Jika Anda ingin menyisipkan konten file sebelum baris terakhir.
Jika Anda ingin menambahkan seluruh file (dan Anda tidak melakukannya
sed
), saya akan menggunakan ini:Ini harus menampilkan segala sesuatu kecuali baris terakhir, maka
cat
yang tersebutinserted_file.txt
dan kemudian menampilkan baris terakhir darifirst_file.txt
.sumber