Proszę mi pomóc w użyciu sed. Mam plik jak poniżej.Sed do wyodrębniania tekstu między dwoma ciągami
START=A
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=B
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=C
xxxxx
xxxxx
END
START=A
xxxxx
xxxxx
END
START=D
xxxxx
xxxxx
END
Chcę uzyskać tekst między START = A, END. Użyłem poniższego zapytania.
sed '/^START=A/,/^END/!d' input_file
Problemem tutaj jest jestem coraz
START=A
xxxxx
xxxxx
END
START=D
xxxxx
xxxxx
END
zamiast
START=A
xxxxx
xxxxx
END
Sed znajdzie łapczywie.
Proszę mi pomóc w rozwiązaniu tego problemu.
Z góry dziękuję.
Czy mogę użyć AWK do osiągnięcia powyższych?
Dzięki za odpowiedź. Potrzebuję tekstu pomiędzy START = A i następnym ENDem, powyższy podaje dane pomiędzy START = A i ostatnim END. Mam nadzieję, że masz mój problem. – ranganath111
Nie, nie ma. Zarówno skrypty 'awk', jak i' sed' - przynajmniej na moim komputerze z moją kopią dostarczonego pliku danych - drukują 5 bloków danych pomiędzy 'START = A' i' END', a bloki z 'START = B' do 'END',' START = C' do 'END' i' START = D' do 'END' są pomijane w danych wyjściowych. Na jakiej platformie testujesz? Którą wersję "sed" używasz? Którą wersję 'awk' używasz? (Zwracam uwagę, że twoje dane testowe powtarza się dosłownie w blokach pomiędzy "START = A" i "END". Byłoby znacznie lepiej, gdybyś miał różne linie pomiędzy, abyś mógł zobaczyć, które linie są drukowane.) –
Kiedy testuję to , początkowe i końcowe toki są uwzględnione w danych wyjściowych, natomiast miałem wrażenie, że OP chciał jedynie danych MIĘDZY nimi. –