Saya memiliki program eksternal yang menghasilkan file output (garis besar, 20K mungkin).
Saya perlu memasukkan baris baru antara baris 1 yang ada dan 2. Saya sudah melihat awk dan sed - saya menggunakan satu liner di masing-masing cukup teratur - tetapi saya belum bisa datang dengan switch yang tepat untuk melakukan hal ini.
text-processing
sed
awk
Tim Brigham
sumber
sumber
awk 'NR==2 {print "new line"} 1'
Untuk kasus spesifik Anda, ini harus lebih sederhana:
Penjelasan: pada baris 1 , lakukan hal berikut
Kemudian, garis (kosong sekarang) dicetak lagi sebagai bagian dari siklus.
Jika Anda ingin menambahkan baris baru alih-alih karakter baris baru (apa yang saya mengerti awalnya) maka gunakan saja
sed
perintaha\
(append):atau bahkan
"
appended line
" Ditambahkan setelah baris 1.sumber
sed -i '1 a\\' file
hanya untuk baris baru.'1 aapended line'
contoh kedua saya .Saya kira
sed
pendekatannya adalah:sed '2 i whatever_line_of_text_you_wanted_to_INSERT' filename.txt
Ini akan membawa teks ke baris kedua file dan kemudian baris kedua yang sebenarnya dengan dalam file akan menjadi yang ketiga.
Perhatikan bahwa, menggunakan mode append , jika harus, itu harus menggunakan baris pertama, karena append akan terjadi setelah nomor baris dicatat.
sed '1 a whatever_line_of_text_you_wanted_to_INSERT' filename.txt
sumber
Penjelasan.
sumber
Ini mungkin bekerja untuk Anda:
Jika Anda ingin menyisipkan
something
setelah baris baru:Atau jika Anda sed menangani
\n
:Tentu saja
a
lebih mudah:sumber
\n
ke baris satu!Saya biasanya menggunakan
ed
ini:Serupa dengan
sed
solusi, tetapi tanpa kekacauan dari baris baru yang lolos.sumber
echo
's, terutama di bawahbash
:ed - filename <<< $'1a\nLine to insert\n.\nw'
.dash
, yang pada banyak sistem/bin/sh
.echo
milik". Sparing semuaecho
's memangbash
hanya fitur, tetapi mengurangiecho
jumlah 4-1 karya didash
danksh
juga:echo '1a\nLine to insert\n.\nw' | ed - filename
.printf %s\\n
saja , yang menempatkan baris baru setelah setiap arg yang Anda berikan dan tidak mengacaukan karakter khusus yang tertanam di baris yang ingin Anda masukkan. Juga, mengapa digunakaned
saatex
tersedia?Solusi Python
sumber
Menggunakan
sed
dan (Escape khusus) ANSI kode melarikan diri:sumber
saya akan menggunakan python untuk ini
sumber
Saya hanya suka menggunakan penghitung eksplisit:
sumber
Metode paling sederhana menggunakan
printf
danex
:1a
berarti "tambahkan setelah baris pertama"; yang.
berakhir menambahkan tersebut;x
berarti simpan dan keluar.sumber
Tidak ada jawaban di atas yang menyebutkan bagaimana cara menyimpan perubahan ke file asli, yang saya pikir apa yang diminta OP.
Itu tentu yang saya butuhkan ketika saya membuka halaman.
Jadi dengan asumsi file Anda dipanggil
output.txt
Kasus penggunaan khusus saya adalah secara otomatis menambahkan deklarasi stylesheet xsl ke file junit xml.
sumber