Awk unix将多行合并为一行并提取单词

Awk unix将多行合并为一行并提取单词,unix,awk,sed,Unix,Awk,Sed,我需要提取租赁IP“192.168.21.100”、硬件以太网“14:10:9f:f2:1d:00”和客户端主机名“2015cmoran-2” 它需要像这样排成一行 “192.168.21.100”,“14:10:9f:f2:1d:00”,“2015cmoran-2” 我已经做了这些,但我认为这不是正确的方法 cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "

我需要提取租赁IP“192.168.21.100”、硬件以太网“14:10:9f:f2:1d:00”和客户端主机名“2015cmoran-2”

它需要像这样排成一行

“192.168.21.100”,“14:10:9f:f2:1d:00”,“2015cmoran-2”

我已经做了这些,但我认为这不是正确的方法

cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "client-hostname") {print $2};}' 

cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "ethernet") {print $3};}'  

cat/var/dhcpd.leases | sed's///g'| sed's//“//g'| awk'{for(I=1;I

这将过滤掉包含
lease | | | | | |硬件以太网| |客户端主机名
,然后
gsub
将被用来过滤掉像
{|}|这样的字符。”
。完成此操作后,打印行。请注意,
ORS
修改为逗号。
sed
用于删除来自
ORS

的最后一个逗号符号
cat | sed
sed | awk
都是常见反模式的变体。除非您是专门连接多个输入文件,并且在同一管道中很少有多个
grep
sed
或Awk。
cat/var/dhcpd.leases | sed's///g'| sed's///g'
可以写成
sed's///g'/var/dhcpd.leases
cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "client-hostname") {print $2};}' 

cat /var/dhcpd.leases | sed 's/;//g' | sed 's/"//g' | awk '{for (I=1;I<=NF;++I) if ($I == "ethernet") {print $3};}'  
x=$(awk -v ORS="," '/lease/||/hardware ethernet/||/client-hostname/{gsub(/{|\;|\"/,"");print "\""$NF"\"" }' inputfile|sed -r 's/(^.*),/\1/' )


 echo $x
 "192.168.21.100","14:10:9f:f2:1d:00","2015cmoran-2"