将接口列表从show vlan列为全名列表按行行

发布于 2025-01-22 16:04:35 字数 925 浏览 3 评论 0原文

我需要从Show Vlan中获取接口列表:

gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19

中获取文本输出

interface gi 1/0/1
...
interface gi 1/0/19

并在使用以下代码将原始输入作为列表

cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""
list1 = cisco1.split()
print(list1)

:这为我提供了一个带有额外逗号的列表(并非每次)。

['gi1/0/1,', 'gi1/0/2,', 'gi1/0/3,', 'gi1/0/5,', 'gi1/0/7,', 'gi1/0/10', 'gi1/0/11,', 'gi1/0/13,', 'gi1/0/15,', 'gi1/0/17,', 'gi1/0/19', 'gi1/0/21,', 'gi1/0/31,', 'gi1/0/32,', 'gi1/0/33,', 'gi1/0/34,', 'gi1/0/35,', 'gi1/0/40']

我想记录每个记录并删除逗号(如果在那里),然后用“ int gi”替换“ gi” 对python的狂欢的任何帮助将不胜感激。

更新: 我想出了这个代码,但我仍然需要在单独的行中打印每个int,然后在“ gi”前添加“ int”。

I need to take list of interfaces from show vlan:

gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19

and get the text output as

interface gi 1/0/1
...
interface gi 1/0/19

I got my original input as a list using following code:

cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""
list1 = cisco1.split()
print(list1)

This gives me a list with extra commas (not every time).

['gi1/0/1,', 'gi1/0/2,', 'gi1/0/3,', 'gi1/0/5,', 'gi1/0/7,', 'gi1/0/10', 'gi1/0/11,', 'gi1/0/13,', 'gi1/0/15,', 'gi1/0/17,', 'gi1/0/19', 'gi1/0/21,', 'gi1/0/31,', 'gi1/0/32,', 'gi1/0/33,', 'gi1/0/34,', 'gi1/0/35,', 'gi1/0/40']

I would like to take each record and remove comma (if its there) and replace "gi" with "int gi"
Any help in bash of python would be appreciated.

Update:
I came up with this code but i still need to print each int in separate line and add "int " in front of "gi".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏佲洛 2025-01-29 16:04:35
cisco1="gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"

tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk '{ print "interface gi " substr($1,3)}'
# ^remove commas       ^blanks to newlines   

interface gi 1/0/1
interface gi 1/0/2
interface gi 1/0/3
interface gi 1/0/5
interface gi 1/0/7
interface gi 1/0/10
interface gi 1/0/11
interface gi 1/0/13
interface gi 1/0/15
interface gi 1/0/17
interface gi 1/0/19
interface gi 1/0/21
interface gi 1/0/31
interface gi 1/0/32
interface gi 1/0/33
interface gi 1/0/34
interface gi 1/0/35
interface gi 1/0/40



var1="no shut";
var2="shut"; 
tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk -v str="$var1" '{ printf "interface gi %s \n", substr($1,3); printf "%s\n", str }'

interface gi 1/0/1
no shut
interface gi 1/0/2
no shut

tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk -v str="$var2" '{ printf "interface gi %s \n", substr($1,3); printf "%s\n", str }'

interface gi 1/0/1
shut
interface gi 1/0/2
shut
cisco1="gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"

tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk '{ print "interface gi " substr($1,3)}'
# ^remove commas       ^blanks to newlines   

interface gi 1/0/1
interface gi 1/0/2
interface gi 1/0/3
interface gi 1/0/5
interface gi 1/0/7
interface gi 1/0/10
interface gi 1/0/11
interface gi 1/0/13
interface gi 1/0/15
interface gi 1/0/17
interface gi 1/0/19
interface gi 1/0/21
interface gi 1/0/31
interface gi 1/0/32
interface gi 1/0/33
interface gi 1/0/34
interface gi 1/0/35
interface gi 1/0/40



var1="no shut";
var2="shut"; 
tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk -v str="$var1" '{ printf "interface gi %s \n", substr($1,3); printf "%s\n", str }'

interface gi 1/0/1
no shut
interface gi 1/0/2
no shut

tr -d ',' <<<$cisco1 | tr ' ' '\n'| awk -v str="$var2" '{ printf "interface gi %s \n", substr($1,3); printf "%s\n", str }'

interface gi 1/0/1
shut
interface gi 1/0/2
shut
何必那么矫情 2025-01-29 16:04:35

您的字符串中有多个定界符。

使用正则表达式。

import re

cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""

list1 = re.split(r',|\n|", ";', cisco1)

print(list1)

要替换,您可以使用列表理解。

finalList = [x.replace("gi","int gi").strip() for x in list1]

print(finalList)

You have multiple delimiters in your string.

use regular expression.

import re

cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""

list1 = re.split(r',|\n|", ";', cisco1)

print(list1)

for replacing you can use list comprehension.

finalList = [x.replace("gi","int gi").strip() for x in list1]

print(finalList)
遗失的美好 2025-01-29 16:04:35

谢谢帕文。这对我有很大帮助。
这是最终代码:

import re
cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""
list11 = re.split(r',|\n|", ";', cisco1)
finalList = [x.replace("gi","int gi").strip() for x in list11]
print(finalList)
for x in finalList:
    print(x)

最终输出行是:

int gi1/0/34
int gi1/0/35
int gi1/0/40

Thank you Pavan. This helped me a lot.
Here is final code:

import re
cisco1 ="""gi1/0/1, gi1/0/2, gi1/0/3, gi1/0/5, gi1/0/7, gi1/0/10
gi1/0/11, gi1/0/13, gi1/0/15, gi1/0/17, gi1/0/19
gi1/0/21, gi1/0/31, gi1/0/32, gi1/0/33, gi1/0/34, gi1/0/35, gi1/0/40"""
list11 = re.split(r',|\n|", ";', cisco1)
finalList = [x.replace("gi","int gi").strip() for x in list11]
print(finalList)
for x in finalList:
    print(x)

final lines of output are:

int gi1/0/34
int gi1/0/35
int gi1/0/40
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文