120 , 3 <IP address> <port>
100 , 3 xx.xxx.xx.xxx xxxx
220 , 3 xxx.xx.xxx.xxx xxxx
280 3 xx.xxx.xx.xxx xx
Эй парни, я работаю над сценарием оболочки и пробую к grep/awk/sed некоторые IP-адреса. Cleaing вывод хитер. Заметьте, что нижняя строка не имеет a ,
. Я пытаюсь сделать soemthing как $ awk '{print $4, $5}'
для отфильтровывания IP и столбцов порта, но это не будет работать с нижней строкой.
Чувствует, что я иду об этом неправильным путем. Как я могу отфильтровать просто IP и порт colomuns?
Так как столбцы являются инвариантными, Вы могли cut -c32-
(man cut
) файл.
Как всегда в Linux существует больше чем один способ сделать задание. Я поместил текст, который Вы предоставили в file.txt
. Вот два возможных пути на основе информации, которую Вы дали:
linux-okrz:~# awk '{print $(NF-1), $(NF)}' file.txt
address> <port>
xx.xxx.xx.xxx xxxx
xxx.xx.xxx.xxx xxxx
xx.xxx.xx.xxx xx
linux-okrz:~# sed 's|,||g' file.txt | awk '{print $3, $4}'
<IP address>
xx.xxx.xx.xxx xxxx
xxx.xx.xxx.xxx xxxx
xx.xxx.xx.xxx xx
Примечание, что в обоих примерах первая строка немного выключена, потому что существует пространство между "IP" и "адресом". Предположение, что в реальном выводе это - фактический IP-адрес, который не должен быть проблемой. Кроме того, второй пример не может работать, если у Вас есть другие экземпляры в выводе, с которым существует важная запятая, которая необходима.
Наконец, эти команды базируются только на выводе и обеспеченном вопросе. Могло случиться так, что дальнейшая тонкая настройка будет необходима в зависимости от того, что еще находится в файле и/или что еще Вы делаете в своем сценарии.