2016-02-17 1 views
1

У меня есть следующие данные в файле input.txt, и мне нужно распечатать вывод, как показано ниже.Печать вывода согласованных строк из отдельных строк в выходной файл, в той же строке

input.txt:

Name   = testserver1.net 
IP-Address = 10.0.0.1 
OStype  = XPClient 
Name   = testserver2.net 
IP-Address = 10.0.0.2 
OStype  = Server2003 

Вывод должен быть таким:

testserver1.net 10.0.0.1 
testserver2.net 10.0.0.2 

До сих пор я сделал так:

awk '/Name/ {print $3}; /IP/ {print $3}' input.txt 

Но я хочу, чтобы напечатать вывод, как выше, в формате строки.

ответ

1
awk '/Name/ {printf "%s ",$3}; /IP/ {print $3}' file 
testserver1.net 10.0.0.1 
testserver2.net 10.0.0.2 
0

С Сед:

$ sed -n '/testserver/{N;s/.*\(testserver\).*= \(.*\)$/\1 \2/p}' input.txt 
testserver 10.0.0.1 
testserver 10.0.0.2 

, который делает в деталях (-n предотвращает печать, если явно не проинструктирован):

/testserver/ {  # If we match 'testserver' 
    N     # Load the next line into pattern space 

    # Substitution: only keep 'testserver' and what's after '=' on the next line 
    # 'p' flag prints pattern space after substitution 
    s/.*\(testserver\).*= \(.*\)$/\1 \2/p 
} 
1
$ awk '/Name/{name=$3} /IP/{print name, $3}' input.txt 
testserver1.net 10.0.0.1 
testserver2.net 10.0.0.2