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
1adalah singkatan dari{print}, jadi semua baris dalam file dicetak- ketika pola cocok, atur
cke 4 - ketika
cmencapai 1 (jadicbenar dan!--cbenar), 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?