sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
- sisipkan baris setelah
}
(sendirian di baris dengan akhirnya beberapa spasi sebelumnya) dari bagian yang dimulai denganfunction_1(
- Saya menganggap tidak ada
}
sendirian di kode internal Anda seperti di sampel Anda
hati-hati dalam pemilihan berdasarkan nama fungsi karena dapat digunakan (dan biasanya memang demikian) sebagai panggilan ke fungsi itu sendiri di bagian kode lain jadi mungkin /^void function_1()$/
lebih baik
Jangan hitung, cocokkan:
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
Ini melihat blok antara deklarasi dan kurung kurawal penutup, lalu menambahkan TEXT_TO_INSERT setelah kurung kurawal penutup.
Gunakan awk:
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1
adalah singkatan dari{print}
, jadi semua baris dalam file dicetak- ketika pola cocok, atur
c
ke 4 - ketika
c
mencapai 1 (jadic
benar dan!--c
benar), sisipkan baris
Anda bisa menggunakan !--c
tetapi menambahkan centang untuk c
menjadi benar juga berarti bahwa c
tidak terus menurun melebihi 0.
Coba ini dengan GNU sed:
sed "/function_1/{N;N;N;a new_text
}" filename
Bagaimana cara me-restart server MySQL jarak jauh yang berjalan di Ubuntu linux?
Menggunakan prctl PR_SET_NAME untuk menetapkan nama untuk proses atau utas?