Saya punya file ini:
sometext1{
string1
}
sometext2{
string2
string3
}
sometext3{
string4
string5
string6
}
Saya ingin mencari file ini untuk string tertentu dan mencetak semuanya sebelum string ini hingga pembukaan {dan semuanya setelah string ini hingga penutupan }. Saya mencoba untuk mencapai ini dengan sed tetapi jika saya mencoba untuk mencetak segala sesuatu dalam kisaran /{/,/string2/misalnya cetak sed ini:
sometext1{
string1
}
sometext2{
string2
sometext3{
string4
string5
string6
}
Jika saya mencari string "string2" saya perlu output menjadi:
sometext2{
string2
string3
}
Terima kasih.
grep -n '' <infile | sed .... sedPerintah - perintah perlu dimodifikasi; khususnya bit /alamat /yang mencari ^jangkar top-of-line. Jadi, jika Anda menggunakan jawaban saya Anda mungkin bisa melakukan: grep -n '' | sed 'H;/{$/h;/^[^:]*:}/x;/{\n.*PATTERN/!d'. Semua baris output akan diawali dengan nomor baris file asli diikuti oleh titik dua seperti 1:sometext1{\n2:string1dan seterusnya. sedakan menyaring hanya apa yang akan disaring sebelumnya, kecuali bahwa setiap jalur output terbuka dengan angka.