Print lines after a pattern match until next pattern match Python
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 |
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 |
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 '18 at 21:14
nasir
asked Nov 10 '18 at 20:55
nasirnasir
53
53
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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 '18 at 21:33
add a comment |
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 |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 '18 at 21:33
add a comment |
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 '18 at 21:33
add a comment |
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 '18 at 21:25
quantquant
1,58211526
1,58211526
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 '18 at 21:33
add a comment |
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 '18 at 21:33
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 '18 at 21:33
Thank you. This is what I was looking to achieve.
– nasir
Nov 10 '18 at 21:33
add a comment |
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 |
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 |
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 '18 at 21:37
askask
727
727
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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