Sejauh ini saya sudah bisa menemukan cara menambahkan baris di awal file tetapi bukan itu yang saya inginkan. Saya akan menunjukkannya pada contoh
Konten file
some text at the beginning
Hasil
<added text> some text at the beginning
Ini mirip tetapi saya tidak ingin membuat baris baru dengannya ...
Saya ingin melakukan ini dengan sed
jika memungkinkan.
sed
.Jawaban:
sed
dapat beroperasi pada alamat:Apakah keajaiban ini yang
1s
Anda lihat pada setiap jawaban di sini? Mengatasi garis! .Ingin menambahkan
<added text>
10 baris pertama?Atau Anda dapat menggunakan
Command Grouping
:sumber
Jika Anda ingin menambahkan baris di awal file, Anda perlu menambahkan
\n
di akhir string dalam solusi terbaik di atas.Solusi terbaik akan menambahkan string, tetapi dengan string, itu tidak akan menambahkan baris di akhir file.
sumber
Jika file hanya satu baris, Anda dapat menggunakan:
Jika lebih dari satu baris. satu dari:
Saya telah memasukkan yang terakhir sehingga Anda tahu bagaimana melakukan rentang garis. Kedua "ganti" ini penanda garis mulai pada baris yang terpengaruh dengan teks yang ingin Anda masukkan. Anda juga dapat (dengan anggapan Anda
sed
cukup modern) menggunakan:untuk melakukan pengeditan di tempat.
sumber
Kamu bisa memakai
cat -
sumber
echo
penambahan baris baru?> file
perintah, itu hanya mem-spammed terminal saya dengan"some text at the beginning"
printf '%s' "some text" | cat - filename > tmpfile && mv tmpfile filename
Untuk menyisipkan baris baru:
sumber
Gunakan subkulit:
sumber
Perhatikan bahwa pada OS X
sed -i <pattern> file
,, gagal. Namun, jika Anda memberikan ekstensi cadangansed -i old <pattern> file
,, makafile
diubah di tempat saatfile.old
dibuat. Anda kemudian dapat menghapusfile.old
dalam skrip Anda.sumber
MASALAH: memberi tag pada file, di bagian atas file, dengan nama dasar direktori induk.
Yaitu, untuk
tandai bagian atas
file1
denganProgramming
.SOLUSI 1 - file tidak kosong:
1s
menempatkan teks pada baris 1 file.SOLUSI 2 - file kosong atau tidak kosong:
The
sed
perintah, atas, gagal pada file kosong. Berikut ini solusinya, berdasarkan /superuser/246837/how-do-i-add-text-to-the-beginning-of-a-file-in-bash/246841#246841Perhatikan bahwa perintah
-
di dalam cat diperlukan (baca input standar: lihatman cat
untuk informasi lebih lanjut). Di sini, saya percaya, diperlukan untuk mengambil output dari pernyataan printf (ke STDIN), dan cat itu dan file untuk temp ... Lihat juga penjelasan di bagian bawah http://www.linfo.org/cat .html .Saya juga menambahkan
-f
kemv
perintah, untuk menghindari dimintai konfirmasi ketika menimpa file.Untuk berulang pada direktori:
Perhatikan juga bahwa ini akan memecah jalur dengan spasi; ada solusi, di tempat lain (misalnya file globbing, atau
find . -type f ...
-type solusi) untuk itu.ADDENDUM: Re: komentar terakhir saya, skrip ini akan memungkinkan Anda untuk melihat kembali direktori dengan spasi di jalur:
sumber
Hai dengan carriage return:
sumber
Untuk menambahkan baris ke bagian atas file:
sumber
Ada cara yang sangat mudah:
sumber
Hanya untuk bersenang-senang, berikut adalah solusi menggunakan
ed
yang tidak memiliki masalah tidak bekerja pada file kosong. Anda dapat memasukkannya ke dalam skrip shell seperti halnya jawaban lain untuk pertanyaan ini.Script di atas menambahkan teks untuk disisipkan ke baris pertama, dan kemudian bergabung dengan baris pertama dan kedua. Untuk menghindari ed keluar dari kesalahan dengan bergabung tidak valid, itu pertama-tama membuat garis kosong di akhir file dan menghapusnya nanti jika masih ada.
Keterbatasan: Skrip ini tidak berfungsi jika
<added text>
sama persis dengan satu periode tunggal.sumber
dua sen saya:
Ini akan berfungsi bahkan adalah string yang berisi garis miring
"/"
sumber
Yang pertama
tac
mem-pipe file mundur (baris terakhir terlebih dahulu) sehingga "teks yang akan disisipkan" muncul terakhir. Yang ke-2tac
membungkusnya sekali lagi sehingga baris yang dimasukkan berada di awal dan file aslinya berada dalam urutan aslinya.sumber
Solusi lain dengan alias. Tambahkan ke file rc / env init Anda:
Pemakaian:
sumber