Arrays Sed或Wk格式化多个列并设置为变量

Arrays Sed或Wk格式化多个列并设置为变量,arrays,bash,variables,awk,sed,Arrays,Bash,Variables,Awk,Sed,下面是我用于从文本文件中提取2行的命令的输出。我必须将主机名和端口名分配给4个不同的全局变量,以便在脚本的其他部分中使用它们进行进一步查询 cat file1 | grep -A7 SECTIONA | grep -E 'Address|BackupAddress hosta="host1" porta="port_1" hostb="host2" portb="port_2" 在下面生成两行 Address host1 port_1 Address BackupAddress hos

下面是我用于从文本文件中提取2行的命令的输出。我必须将主机名和端口名分配给4个不同的全局变量,以便在脚本的其他部分中使用它们进行进一步查询

cat file1 | grep -A7 SECTIONA  | grep -E 'Address|BackupAddress
hosta="host1"
porta="port_1"
hostb="host2"
portb="port_2"
在下面生成两行

Address host1  port_1  Address
BackupAddress host2 port_2  BackupAddress
我需要将主机和端口列分配给不同的全局变量(不是打印) 要在脚本中稍后使用

cat file1 | grep -A7 SECTIONA  | grep -E 'Address|BackupAddress
hosta="host1"
porta="port_1"
hostb="host2"
portb="port_2"

请帮忙

source将文件1添加到您的问题中。顺便说一句:
Address
BackupAddress
的子字符串。您好,Michael-谢谢您的回复。此解决方案打印所需的输出,但是,当我回显变量或尝试使用它们时,它们是空白的。看起来命令所做的只是打印输出。如何将此输出转换为全局变量?读取命令?不确定?我已经修改了我的答案。
source <(sed -n 's/^Address *\([^ ]\+\) *\([^ ]\+\).*/hosta="\1"\nporta="\2"/p;
        s/^BackupAddress *\([^ ]\+\) *\([^ ]\+\).*/hostb="\1"\nportb="\2"/p' file1)