【问题标题】:Print everything below after a trailing "========" [duplicate]在尾随“========”之后打印下面的所有内容[重复]
【发布时间】:2019-11-30 06:40:49
【问题描述】:

如何在结尾的=========== 之后打印下面的所有内容

switchName:     GBL_A_SW1
switchType:     166.0
switchState:    Online
switchMode:     Native
switchRole:     Principal
switchDomain:   42
switchId:       fffb3a
switchWwn:      10:00:97:55:21:11:b7:c4
zoning:         ON (GBL_Fabric_A_Active)
switchBeacon:   OFF
FC Router:      OFF
HIF Mode:       OFF
Allow XISL Use: OFF
LS Attributes:  [FID: 128, Base Switch: No, Default Switch: Yes, Ficon Switch: No, Address Mode 0]

Index Slot Port Address Media  Speed        State    Proto
============================================================
   0    3    0   2a0040   id    N8        Online      FC  E-Port  (Trunk port, master is Slot  3 Port  1 )
   1    3    1   2a0140   id    N8        Online      FC  E-Port  10:00:c4:f5:7c:2c:1d:d8 "GBL_A_BAS384B" (downstream)(Trunk master)
   2    3    2   2a0240   id    N8        Online      FC  F-Port  1 N Port + 1 NPIV public
   3    3    3   2a0340   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:39:f3
   4    3    4   2a0440   id    N8        Online      FC  F-Port  20:0f:00:05:33:46:0d:90
   5    3    5   2a0540   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:ea:1d
   6    3    6   2a0640   id    N16       Online      FC  E-Port  5c:4f:57:c4:33:15:ce:20 "fcr_fd_160" (downstream)(Trunk master)
   7    3    7   2a0740   id    N16       Online      FC  E-Port  (Trunk port, master is Slot  3 Port  6 )
   8    3    8   2a0840   id    N8        Online      FC  F-Port  50:01:73:80:31:2d:01:80
   9    3    9   2a0940   id    N8        Online      FC  F-Port  50:05:07:63:05:23:12:d1
  10    3   10   2a0a40   id    N8        Online      FC  F-Port  50:05:07:68:01:50:ef:47
  11    3   11   2a0b40   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:c0:55
  12    3   12   2a0c40   id    N8        Online      FC  F-Port  10:00:8c:7c:ff:21:ab:12
  13    3   13   2a0d40   id    N8        Online      FC  F-Port  1 N Port + 3 NPIV public
  14    3   14   2a0e40   id    N4        Online      FC  F-Port  21:00:00:24:ff:25:f0:1e
  15    3   15   2a0f40   id    N16       Online      FC  F-Port  50:05:07:68:01:40:a7:28
 128    3   16   2a8040   id    N8        Online      FC  F-Port  21:00:00:24:ff:4e:76:ad
 129    3   17   2a8140   id    N8        Online      FC  F-Port  50:05:07:68:01:20:d6:f0
 130    3   18   2a8240   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:e1:d0

像这样

   0    3    0   2a0040   id    N8        Online      FC  E-Port  (Trunk port, master is Slot  3 Port  1 )
   1    3    1   2a0140   id    N8        Online      FC  E-Port  10:00:c4:f5:7c:2c:1d:d8 "GBL_A_BAS384B" (downstream)(Trunk master)
   2    3    2   2a0240   id    N8        Online      FC  F-Port  1 N Port + 1 NPIV public
   3    3    3   2a0340   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:39:f3
   4    3    4   2a0440   id    N8        Online      FC  F-Port  20:0f:00:05:33:46:0d:90
   5    3    5   2a0540   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:ea:1d
   6    3    6   2a0640   id    N16       Online      FC  E-Port  5c:4f:57:c4:33:15:ce:20 "fcr_fd_160" (downstream)(Trunk master)
   7    3    7   2a0740   id    N16       Online      FC  E-Port  (Trunk port, master is Slot  3 Port  6 )
   8    3    8   2a0840   id    N8        Online      FC  F-Port  50:01:73:80:31:2d:01:80
   9    3    9   2a0940   id    N8        Online      FC  F-Port  50:05:07:63:05:23:12:d1
  10    3   10   2a0a40   id    N8        Online      FC  F-Port  50:05:07:68:01:50:ef:47
  11    3   11   2a0b40   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:c0:55
  12    3   12   2a0c40   id    N8        Online      FC  F-Port  10:00:8c:7c:ff:21:ab:12
  13    3   13   2a0d40   id    N8        Online      FC  F-Port  1 N Port + 3 NPIV public
  14    3   14   2a0e40   id    N4        Online      FC  F-Port  21:00:00:24:ff:25:f0:1e
  15    3   15   2a0f40   id    N16       Online      FC  F-Port  50:05:07:68:01:40:a7:28
 128    3   16   2a8040   id    N8        Online      FC  F-Port  21:00:00:24:ff:4e:76:ad
 129    3   17   2a8140   id    N8        Online      FC  F-Port  50:05:07:68:01:20:d6:f0
 130    3   18   2a8240   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:e1:d0

尝试使用awk '{print $0}' RS='==' data,但======== 上面的细节仍然存在,并且差距很大。


更新:

所以现在一切就绪。但是,我很难连接文件。 我有两个名为 sw_namefinal_sw_name 的文件,它们由上面的数据组成并被传递给一个变量。

当我尝试使用此命令回显它时
echo -e "$sw_name" > ${SW_TEMP}/TP; echo -e "\n final_sw_name >> ${SW_TEMP}/TP $sw_name 正在回显在文件上,而不是 $final_sw_name

应该是这样的:

 Switch_Name
   0    3    0   2a0040   id    N8        Online      FC  E-Port  (Trunk port, master is Slot  3 Port  1 )
   1    3    1   2a0140   id    N8        Online      FC  E-Port  10:00:c4:f5:7c:2c:1d:d8 "GBL_A_BAS384B" (downstream)(Trunk master)
   2    3    2   2a0240   id    N8        Online      FC  F-Port  1 N Port + 1 NPIV public
   3    3    3   2a0340   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:39:f3
   4    3    4   2a0440   id    N8        Online      FC  F-Port  20:0f:00:05:33:46:0d:90
   5    3    5   2a0540   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:ea:1d
   6    3    6   2a0640   id    N16       Online      FC  E-Port  5c:4f:57:c4:33:15:ce:20 "fcr_fd_160" (downstream)(Trunk master)
   7    3    7   2a0740   id    N16       Online      FC  E-Port  (Trunk port, master is Slot  3 Port  6 )
   8    3    8   2a0840   id    N8        Online      FC  F-Port  50:01:73:80:31:2d:01:80
   9    3    9   2a0940   id    N8        Online      FC  F-Port  50:05:07:63:05:23:12:d1
  10    3   10   2a0a40   id    N8        Online      FC  F-Port  50:05:07:68:01:50:ef:47
  11    3   11   2a0b40   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:c0:55
  12    3   12   2a0c40   id    N8        Online      FC  F-Port  10:00:8c:7c:ff:21:ab:12
  13    3   13   2a0d40   id    N8        Online      FC  F-Port  1 N Port + 3 NPIV public
  14    3   14   2a0e40   id    N4        Online      FC  F-Port  21:00:00:24:ff:25:f0:1e
  15    3   15   2a0f40   id    N16       Online      FC  F-Port  50:05:07:68:01:40:a7:28
 128    3   16   2a8040   id    N8        Online      FC  F-Port  21:00:00:24:ff:4e:76:ad
 129    3   17   2a8140   id    N8        Online      FC  F-Port  50:05:07:68:01:20:d6:f0
 130    3   18   2a8240   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:e1:d0

【问题讨论】:

标签: shell unix awk


【解决方案1】:

你可以使用这个awk 命令:

awk 'p; /^=+$/{p=1}' file

   0    3    0   2a0040   id    N8        Online      FC  E-Port  (Trunk port, master is Slot  3 Port  1 )
   1    3    1   2a0140   id    N8        Online      FC  E-Port  10:00:c4:f5:7c:2c:1d:d8 "GBL_A_BAS384B" (downstream)(Trunk master)
   2    3    2   2a0240   id    N8        Online      FC  F-Port  1 N Port + 1 NPIV public
   3    3    3   2a0340   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:39:f3
   4    3    4   2a0440   id    N8        Online      FC  F-Port  20:0f:00:05:33:46:0d:90
   5    3    5   2a0540   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:ea:1d
   6    3    6   2a0640   id    N16       Online      FC  E-Port  5c:4f:57:c4:33:15:ce:20 "fcr_fd_160" (downstream)(Trunk master)
   7    3    7   2a0740   id    N16       Online      FC  E-Port  (Trunk port, master is Slot  3 Port  6 )
   8    3    8   2a0840   id    N8        Online      FC  F-Port  50:01:73:80:31:2d:01:80
   9    3    9   2a0940   id    N8        Online      FC  F-Port  50:05:07:63:05:23:12:d1
  10    3   10   2a0a40   id    N8        Online      FC  F-Port  50:05:07:68:01:50:ef:47
  11    3   11   2a0b40   id    N16       Online      FC  F-Port  20:21:00:02:ac:01:c0:55
  12    3   12   2a0c40   id    N8        Online      FC  F-Port  10:00:8c:7c:ff:21:ab:12
  13    3   13   2a0d40   id    N8        Online      FC  F-Port  1 N Port + 3 NPIV public
  14    3   14   2a0e40   id    N4        Online      FC  F-Port  21:00:00:24:ff:25:f0:1e
  15    3   15   2a0f40   id    N16       Online      FC  F-Port  50:05:07:68:01:40:a7:28
 128    3   16   2a8040   id    N8        Online      FC  F-Port  21:00:00:24:ff:4e:76:ad
 129    3   17   2a8140   id    N8        Online      FC  F-Port  50:05:07:68:01:20:d6:f0
 130    3   18   2a8240   id    N4        Online      FC  F-Port  20:00:00:05:1e:0f:e1:d0

【讨论】:

  • 顺便说一句,有没有办法我可以 grep 这部分 switchName: GBL_A_SW1 然后接下来是这个 awk 'p; /^=+$/{p=1}'.. 尝试了不同的组合,但我无法得到它。
  • 是的,您可以使用:awk 'p || /^switchName/ || p; /^=+$/{p=1}' file
  • 所以我是要实现所需的,但是当我将它放在一个变量上并回显它时。它没有按预期打印。它正在打印,但不使用换行符` 0 3 0 2a0040 id N8 Online FC E-Port (Trunk port, master is Slot 3 Port 1 ) 1 3 1 2a0140 id N8 Online FC E-Port 10:00:c4:f5:7c: 2c:1d:d8 "GBL_A_BAS384B"(下游)(主干)2 3 2`
  • 代码和数据在 cmets 中不可读。最好编辑您的问题并使用尝试的代码显示您的输入数据。
  • 我不明白您的命令echo -e "$sw_name" > ${SW_TEMP}/TP; echo -e "\n final_sw_name >> ${SW_TEMP}/TP The $sw_name 与我建议的awk 命令有何关系。
【解决方案2】:

试试:

sed '0,/========/ d' data

它从 [0 .. 正则表达式 ========] 范围内的流中删除第一行,然后正常打印流的其余部分。


请注意,0 起始行是 GNU 扩展,这意味着它在某些系统上可能不可用。 如果你想要一个可移植的脚本,最好使用索引1

sed '1,/========/ d' data

如果字符 ======= 在第一行,则第二种解决方案将不起作用。

如果是这种情况,您可以在流的开头插入一个空行。

{ printf '\n' ; cat data ; } | sed '1,/========/ d'

【讨论】:

  • 请注意,0 作为地址是 GNU sed 扩展。
  • 如果匹配在第一行就不行了;我的意思更多的是,您可能应该指出它是 GNU 扩展。
  • @BenjaminW。这个解决方案比我预期的要复杂。不管怎样,我希望现在一切都好。
【解决方案3】:

试试

awk 'BEGIN { RS="^==.*$"; } { print $0 ; }'

【讨论】:

  • RS 定义为扩展正则表达式是GNU awk 的扩展。根据 Posix,RS 只是一个字符。
猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 2013-08-12
  • 2018-08-29
  • 1970-01-01
  • 2012-02-29
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多