Сортировка нескольких разных строк в файле в выходной файл - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь отсортировать все IP-адреса с одним и тем же портом в один выходной файл.Проблема, с которой я сталкиваюсь, заключается в том, что с использованием синтаксиса, который я использую, в выходном файле будет получено много неправильных IP-адресов:

cat input.txt | grep ":80" > output.port80.txt

Содержимое файла input.txt:

192.168.1.1:8080
192.168.1.2:80
192.168.1.3:18080
192.168.1.4:808
192.168.1.5:80
...

Ответы [ 3 ]

2 голосов
/ 08 марта 2019

Предполагая, что вам нужно иметь только те IP-адреса, которые заканчиваются на порт 80, в этом случае попробуйте выполнить следующее.

grep '.*:80$' Input_file > output_file
1 голос
/ 08 марта 2019

Если вы используете GNU grep, вы можете использовать:

grep -P ':80\b' input.txt > output.port80.txt

в противном случае, если файл заканчивается на :port, используйте это:

grep ':80$' input.txt > output.port80.txt

Точнее, если после :port,

есть пробелы
grep ':80[[:space:]]*$' input.txt > output.port80.txt

С awk вы можете справиться с такими ситуациями, как 192.168.1.7:80THINGSafter,
и убрать вещи после :port:

awk '(p=index($0, ":80")) && (substr($0,p+3,1) !~ /[0-9]/){print substr($0,1,p+2)}' input.txt > output.port80.txt
1 голос
/ 08 марта 2019

Вы также можете использовать awk

$ awk -F: ' /:80$/ { print $0  } ' gerald.log
192.168.1.2:80
192.168.1.5:80

$ awk -F: ' /:80$/ { print $0 > "output." $2 ".log" } ' gerald.log

$ cat  output.80.log
192.168.1.2:80
192.168.1.5:80

$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...