Czesc,
podsuniecie mi pomysl w jaki sposob moge uzyskac zamierzony efekt?
Dla uproszczonego testu mam sobie plik text.txt
`START_LINE
multi
line
string
MY_END_LINE
1
2
3
4
5
6`
Zalezy mi na tym aby wybrac zakres pomiedzy
Jak wiec zmodyfikowac ponizsze aby dolaczyc kolejne linie?
Problem w tym ze moim jedynym pkt odniesienia w duzym pliku bedzie
Dzieki za ewentualna pomoc.
#bash #sed #regexp #programowanie
podsuniecie mi pomysl w jaki sposob moge uzyskac zamierzony efekt?
Dla uproszczonego testu mam sobie plik text.txt
`START_LINE
multi
line
string
MY_END_LINE
1
2
3
4
5
6`
Zalezy mi na tym aby wybrac zakres pomiedzy
START_LINE a MY_END_LINE + 6 linii tekstu
Jak wiec zmodyfikowac ponizsze aby dolaczyc kolejne linie?
sed -n '/^START_LINE$/,/^MY_END_LINE/p' text.txt
Problem w tym ze moim jedynym pkt odniesienia w duzym pliku bedzie
START_LINE oraz MY_END_LINE, jako ze 1-6 beda zawieraly adresy, ktore moga byc rozne.
Dzieki za ewentualna pomoc.
#bash #sed #regexp #programowanie
OperatorHydrolokator
2018-10-12 13:40:52
+0
@cs16_pl: a tych linii tam może być więcej niż6 ?
OperatorHydrolokator
2018-10-12 13:44:10
+0
cs16_pl
[OP]
2018-10-12 13:56:55
+0
@OperatorHydrolokator: zakladam ze bedzie 6.
Pytanie czy to bedzie dzialalo jak nalezy, bo blok pomiedzy
Pytanie czy to bedzie dzialalo jak nalezy, bo blok pomiedzy
START_LINE a 6 moze wystapic wiecej razy albo wcale. I w przypadku gdy mam dwie instancje nie chcialbym aby dane byly pomieszane.
OperatorHydrolokator
2018-10-12 14:11:37
+0
@cs16_pl: a tego to nie pisałeś wcześniej :P Czyli, że co, plik może wyglądać tak:
START_LINE
multi
line
string
multi
line
string
multi
line
string
MY_END_LINE
1
2
3
4
5
6
czy jak? Podaj jakiś przykład, będzie łatwiej.
START_LINE
multi
line
string
multi
line
string
multi
line
string
MY_END_LINE
1
2
3
4
5
6
czy jak? Podaj jakiś przykład, będzie łatwiej.
cs16_pl
[OP]
2018-10-12 14:21:21
+0
@OperatorHydrolokator:
Nie moge tak zrobic, bo
Plik moze wygladac tak:
`DIFFERENT_STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6
STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6
ANOTHER_DIFFERENT_STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6`
gdzie
Nie moge tak zrobic, bo
MY_END_LINE wystepuje tez w blokach ktore nie pasuja do START_LINE
Plik moze wygladac tak:
`DIFFERENT_STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6
STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6
ANOTHER_DIFFERENT_STARTLINE
multi
line
string
multi
line
string
multi
line
string
MYEND_LINE
1
2
3
4
5
6`
gdzie
MYEND_LINE bedzie zawsze takie same.
OperatorHydrolokator
2018-10-12 14:24:56
+0
@cs16_pl: aaa, i w tym momencie ciebie interesuje konkretnie ten środkowy blok, nie?
cs16_pl
[OP]
2018-10-12 14:26:59
+0
@OperatorHydrolokator: dokładnie tak.
Dzieki za odpowiedzi.
Dzieki za odpowiedzi.
OperatorHydrolokator
2018-10-12 14:56:00
+0
[komentarz usunięty]
OperatorHydrolokator
2018-10-12 15:05:21
+0
@cs16_pl: a takie coś?
Przy założeniu, że będą wolne linie w tym pliku ;D
sed -n '/^START_LINE$/,/^$/p' plik.txt
Przy założeniu, że będą wolne linie w tym pliku ;D
cs16_pl
[OP]
2018-10-12 15:17:16
+0
@OperatorHydrolokator: hmm to zdefiniuje zakres od START_LINE do ostatniej pustej.
W pliku sa transakcje, w roznych sekcjach znajduja sie puste linie, wiec to nie moze byc punkt odniesienia.
Jesli wiec transakcja ma swoj specyficzny poczatek to potrzebuje ja cala wylapac. Na samym dole (5 i 6) znajduje sie linia adresowa, gdzie w zaleznosci od miejsca moze byc inna :)
W skrocie - gdy zaczyna sie od STARTLINE, chce wylapac wszystko do 6. 6 nie znam, dlatego najblizej jest MYENDLINE, do ktorej moglbym dolaczyc 6 linii. Sek w tym ze MYENDLINE bedzie sie powtarzalo w innych fragmentach.
Troche chaotycznie to napisalem ale mam nadzieje ze da sie zrozumiec ( ͡° ͜ʖ ͡°)
W pliku sa transakcje, w roznych sekcjach znajduja sie puste linie, wiec to nie moze byc punkt odniesienia.
Jesli wiec transakcja ma swoj specyficzny poczatek to potrzebuje ja cala wylapac. Na samym dole (5 i 6) znajduje sie linia adresowa, gdzie w zaleznosci od miejsca moze byc inna :)
W skrocie - gdy zaczyna sie od STARTLINE, chce wylapac wszystko do 6. 6 nie znam, dlatego najblizej jest MYENDLINE, do ktorej moglbym dolaczyc 6 linii. Sek w tym ze MYENDLINE bedzie sie powtarzalo w innych fragmentach.
Troche chaotycznie to napisalem ale mam nadzieje ze da sie zrozumiec ( ͡° ͜ʖ ͡°)
OperatorHydrolokator
2018-10-12 15:27:41
+0
@cs16_pl: No to trochę komplikuje sprawę ( ͡° ͜ʖ ͡°)