将多行的输出列分配给不同的变量?

时间:2017-06-12 04:13:36

标签: linux bash shell awk sed

下面你会找到我用来从xml文件中提取2行输出的awk和sed命令的输出。我必须将主机名和端口名分配给4个不同的变量,以便我可以使用它们进行进一步的查询。你能帮忙吗?

cat file | awk | sed在下面生成两行

Address host1  port_1  Address
BackupAddress host2 port_2  BackupAddress

期望的输出

hosta="host1"
porta="port_1"
hostb="host2"
portb="port_2"

我很感激并欢迎您对决议的详细解释。

1 个答案:

答案 0 :(得分:0)

使用awk:

awk '
  /^Address/       { print "hosta=\""$2"\"\nporta=\""$3"\"" }
  /^BackupAddress/ { print "hostb=\""$2"\"\nportb=\""$3"\"" }' file

或者,使用变量来保存双引号以减少混乱:

awk -v q='"' '
  /^Address/       { print "hosta="q$2q"\nporta="q$3q }
  /^BackupAddress/ { print "hostb="q$2q"\nportb="q$3q }' file

我不确定您目前使用的代码是什么。如果你已经用awk编写了它,你也可以在那里加入上述逻辑。