我有包含大量信息的文本文件。我只想获得别名。 所有别名和端口信息都用空格分隔,每个端口用分号分隔。
此命令..
cat ~/Desktop/brocade_output.txt |grep -A1 alias
给我这个输出。所有别名都以a_前缀开头。
> alias: a_computer_1
40:01:00:00:ab:00:00:aj; 60:01:00:0e:1e:d0:b5:fd
--
alias: a_helpdesk
41:00:00:24:fh:5c:99:9e; 81:00:00:24:ff:5c:48:9f
--
alias: a_library
91:00:00:24:fh:5c:99:9g; 91:00:00:24:ff:5c:48:9g
--
期望的输出
a_computer_1 40:01:00:00:ab:00:00:aj 60:01:00:0e:1e:d0:b5:fd
a_helpdesk 41:00:00:24:fh:5c:99:9e 81:00:00:24:ff:5c:48:9f
a_library 91:00:00:24:fh:5c:99:9g 91:00:00:24:ff:5c:48:9g
答案 0 :(得分:4)
在awk中:
$ awk '/alias/ {f=$2;next} f{$1=$1; print f, $0; f=0 }' file
a_computer_1 40:01:00:00:ab:00:00:aj; 60:01:00:0e:1e:d0:b5:fd
a_helpdesk 41:00:00:24:fh:5c:99:9e; 81:00:00:24:ff:5c:48:9f
a_library 91:00:00:24:fh:5c:99:9g; 91:00:00:24:ff:5c:48:9g
说明:
/alias/ {f=$2;next}
时{li> alias
,f
等于第二个字段
f{$1=$1; print f, $0; f=0 }
设置f
时,将其打印并显示"下一条记录" 答案 1 :(得分:0)
使用sed:
-i
添加 txtIDNum.TextChanging += txtIDNum_TextChanging;
txtNameLT.TextChanging += txtNameLT_TextChanging;
txtFamilyLT.TextChanging += txtFamilyLT_TextChanging;
标志以编辑文件。
答案 2 :(得分:0)
试试这个:
grep -A1 alias ~/Desktop/brocade_output.txt | cut -f2- -d":"
我的理解是你想要第一个:
之后的行部分,所以使用:
作为cut
的分隔符并从2开始的所有字段应该做的伎俩
答案 3 :(得分:0)
这也可以在Perl中完成,还有一些字符:
perl -ane 'if (/alias/){$_=<>; s/^\s*//; print "$F[1] $_"}' file
使用这些命令行选项:
- -n
循环输入文件的每一行
- -a
autosplit模式 - 将输入行拆分为@F
数组
- -e
执行perl代码
/alias/
与当前行匹配
$F[1]
是@F
中的第二个元素
$_=<>
将$_
默认变量分配给输入文件中的下一行
s/^\s*//
从$_