Kamu tidak bisa. Bukan itu yang terjadi sed dirancang untuk dilakukan.
Anda bisa melakukannya dengan grep , jika jumlah kemunculan ID telah diperbaiki. Jika bukan itu variabel, Anda akan membutuhkan sesuatu yang lebih kuat, seperti skrip bash atau perl.
Jika jumlah kemunculan ID diperbaiki (katakanlah, 3), maka perintah berikut
grep -B 1 -A 3 SU0000 filename.txt
akan melakukan apa yang Anda butuhkan.
EDIT:
jika jumlah kemunculan SU0000 tidak diperbaiki, skrip berikut akan melakukan trik untuk Anda, di mana file yang akan diuraikan disebut "data". Ubah sesuai keinginan Anda.
#!/bin/bash
I_INSIDE=0
PREVIOUS_LINE=""
while read line; do
echo $line | grep -e SU0000 2>&1 1>/dev/null
if [ $? == 0 ]; then
echo $PREVIOUS_LINE
echo $line
I_INSIDE=1
PREVIOUS_LINE=$line
continue
fi
echo $line | grep -e ID 2>&1 1>/dev/null
if [ $? == 0 -a $I_INSIDE == 1 ]; then
echo $line
else
I_INSIDE=0
fi
PREVIOUS_LINE=$line
done < data
Ini adalah skrip yang sangat dasar, untuk memungkinkan Anda mengikuti setiap instruksi. itu bisa sangat kental.
pattern
sini? Anda mengatakan bahwa Anda perlu garis sebelum pola diikuti oleh semua garis yang dimulai denganID
, tetapi sampel Anda habissometext line 6
Bisakah Anda menjelaskannya?