Awk unix将多行合并为一行并提取单词
我需要提取租赁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” 我已经做了这些,但我认为这不是正确的方法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 == "
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"