Print lines after a pattern match until next pattern match Python
up vote
0
down vote
favorite
I have a text file like this
ababaabababab
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
-hostname r
ababababababa
ababaabababab
r#
I would like to get something like this output
>>> print running_conf
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
>>> print saved_conf
-hostname r
ababababababa
ababaabababab
After trying so many stuff on this site, I still can't make it work. this is my code
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
continue
if line.startswith( '-' ):
break
print line
for line in saveoutput:
if line.startswith( '-' ):
if line.endswith( '#' ):
break
print line
python python-2.7
add a comment |
up vote
0
down vote
favorite
I have a text file like this
ababaabababab
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
-hostname r
ababababababa
ababaabababab
r#
I would like to get something like this output
>>> print running_conf
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
>>> print saved_conf
-hostname r
ababababababa
ababaabababab
After trying so many stuff on this site, I still can't make it work. this is my code
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
continue
if line.startswith( '-' ):
break
print line
for line in saveoutput:
if line.startswith( '-' ):
if line.endswith( '#' ):
break
print line
python python-2.7
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a text file like this
ababaabababab
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
-hostname r
ababababababa
ababaabababab
r#
I would like to get something like this output
>>> print running_conf
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
>>> print saved_conf
-hostname r
ababababababa
ababaabababab
After trying so many stuff on this site, I still can't make it work. this is my code
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
continue
if line.startswith( '-' ):
break
print line
for line in saveoutput:
if line.startswith( '-' ):
if line.endswith( '#' ):
break
print line
python python-2.7
I have a text file like this
ababaabababab
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
-hostname r
ababababababa
ababaabababab
r#
I would like to get something like this output
>>> print running_conf
+hostname R1
interface GigabitEthernet0/1
+shutdown
+banner login
>>> print saved_conf
-hostname r
ababababababa
ababaabababab
After trying so many stuff on this site, I still can't make it work. this is my code
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
continue
if line.startswith( '-' ):
break
print line
for line in saveoutput:
if line.startswith( '-' ):
if line.endswith( '#' ):
break
print line
python python-2.7
python python-2.7
edited Nov 10 at 21:14
asked Nov 10 at 20:55
nasir
53
53
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
1
down vote
accepted
The following code will output everything in your file from a line starting with '+' onwards till a line starting with "-" gets reached:
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy = True
if line.startswith( '-' ):
copy = False
if copy:
print line
and the following program
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '-' ):
copy = True
if line.endswith( '#' ):
copy = False
if copy:
print line
will output everything from the first line starting with a "-" till the line ending with a "#". In case you want to have a single program that is doing both actions altogether:
copy1 = False
copy2 = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy1 = True
if line.startswith( '-' ):
copy1 = False
if line.startswith( '-' ):
copy2 = True
if line.endswith( '#' ):
copy2 = False
if copy1 or copy2:
print line
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
add a comment |
up vote
0
down vote
Below is the program that gives your desired output, although please specify the cases of your output clearly.
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if line.startswith('-'):
flag=False
elif line.startswith('+'):
flag=True
if flag:
print(line,end='')
print('------------------------')
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if (line.startswith('+')) or (line.endswith('#n')):
flag=False
elif line.startswith('-'):
flag=True
if flag:
print(line,end='')
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
The following code will output everything in your file from a line starting with '+' onwards till a line starting with "-" gets reached:
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy = True
if line.startswith( '-' ):
copy = False
if copy:
print line
and the following program
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '-' ):
copy = True
if line.endswith( '#' ):
copy = False
if copy:
print line
will output everything from the first line starting with a "-" till the line ending with a "#". In case you want to have a single program that is doing both actions altogether:
copy1 = False
copy2 = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy1 = True
if line.startswith( '-' ):
copy1 = False
if line.startswith( '-' ):
copy2 = True
if line.endswith( '#' ):
copy2 = False
if copy1 or copy2:
print line
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
add a comment |
up vote
1
down vote
accepted
The following code will output everything in your file from a line starting with '+' onwards till a line starting with "-" gets reached:
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy = True
if line.startswith( '-' ):
copy = False
if copy:
print line
and the following program
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '-' ):
copy = True
if line.endswith( '#' ):
copy = False
if copy:
print line
will output everything from the first line starting with a "-" till the line ending with a "#". In case you want to have a single program that is doing both actions altogether:
copy1 = False
copy2 = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy1 = True
if line.startswith( '-' ):
copy1 = False
if line.startswith( '-' ):
copy2 = True
if line.endswith( '#' ):
copy2 = False
if copy1 or copy2:
print line
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
The following code will output everything in your file from a line starting with '+' onwards till a line starting with "-" gets reached:
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy = True
if line.startswith( '-' ):
copy = False
if copy:
print line
and the following program
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '-' ):
copy = True
if line.endswith( '#' ):
copy = False
if copy:
print line
will output everything from the first line starting with a "-" till the line ending with a "#". In case you want to have a single program that is doing both actions altogether:
copy1 = False
copy2 = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy1 = True
if line.startswith( '-' ):
copy1 = False
if line.startswith( '-' ):
copy2 = True
if line.endswith( '#' ):
copy2 = False
if copy1 or copy2:
print line
The following code will output everything in your file from a line starting with '+' onwards till a line starting with "-" gets reached:
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy = True
if line.startswith( '-' ):
copy = False
if copy:
print line
and the following program
copy = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '-' ):
copy = True
if line.endswith( '#' ):
copy = False
if copy:
print line
will output everything from the first line starting with a "-" till the line ending with a "#". In case you want to have a single program that is doing both actions altogether:
copy1 = False
copy2 = False
with open ("file.text", "r") as saveoutput:
for line in saveoutput:
if line.startswith( '+' ):
copy1 = True
if line.startswith( '-' ):
copy1 = False
if line.startswith( '-' ):
copy2 = True
if line.endswith( '#' ):
copy2 = False
if copy1 or copy2:
print line
answered Nov 10 at 21:25
quant
1,55111526
1,55111526
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
add a comment |
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 at 21:33
add a comment |
up vote
0
down vote
Below is the program that gives your desired output, although please specify the cases of your output clearly.
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if line.startswith('-'):
flag=False
elif line.startswith('+'):
flag=True
if flag:
print(line,end='')
print('------------------------')
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if (line.startswith('+')) or (line.endswith('#n')):
flag=False
elif line.startswith('-'):
flag=True
if flag:
print(line,end='')
add a comment |
up vote
0
down vote
Below is the program that gives your desired output, although please specify the cases of your output clearly.
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if line.startswith('-'):
flag=False
elif line.startswith('+'):
flag=True
if flag:
print(line,end='')
print('------------------------')
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if (line.startswith('+')) or (line.endswith('#n')):
flag=False
elif line.startswith('-'):
flag=True
if flag:
print(line,end='')
add a comment |
up vote
0
down vote
up vote
0
down vote
Below is the program that gives your desired output, although please specify the cases of your output clearly.
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if line.startswith('-'):
flag=False
elif line.startswith('+'):
flag=True
if flag:
print(line,end='')
print('------------------------')
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if (line.startswith('+')) or (line.endswith('#n')):
flag=False
elif line.startswith('-'):
flag=True
if flag:
print(line,end='')
Below is the program that gives your desired output, although please specify the cases of your output clearly.
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if line.startswith('-'):
flag=False
elif line.startswith('+'):
flag=True
if flag:
print(line,end='')
print('------------------------')
flag=False
with open ("file.txt", "r") as saveoutput:
for line in saveoutput:
if (line.startswith('+')) or (line.endswith('#n')):
flag=False
elif line.startswith('-'):
flag=True
if flag:
print(line,end='')
answered Nov 10 at 21:37
ask
727
727
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243323%2fprint-lines-after-a-pattern-match-until-next-pattern-match-python%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown