Заменить слова, кроме слов, совпадающих с точкой

Немного покопаюсь, это сборщик статистики. Судя по всему, статистика публикуется на локальном loopback (, также известном как localhost )UDP. См. здесь :http://www.neilconway.org/talks/hacking/ottawa/ottawa_slides.pdf. По сути, различные (внутренние )подпроцессы PostgreSQL используют этот UDP-порт для отправки статистики сборщику статистики. То, что вы видите, — это «слушающий» сокет, ожидающий получения сообщений.

Порт 57504 является эфемерным портом . Это означает, что его никто не выбрал, он назначается случайным образом во время выполнения. Это отмечено здесь:https://www.postgresql.org/message-id/1273002081.2590.7.camel@w-ehs-psa.telbiomed.at

Обратите внимание, что протокол UDP сильно отличается от протокола TCP, поскольку он не заботится о соединениях. Сокеты UDP больше похожи на почтовый ящик; прием сообщений от чего бы то ни было и отправка туда, куда каждое из них адресовано. Таким образом, удаленный хост и удаленный порт часто можно игнорировать.

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

0
06.07.2020, 18:36
2 ответа

Питон

#!/usr/bin/python
import re
l=re.compile(r'Tx5000')
k=open('rr.txt','r')
for i in k:
    if re.search(l,i):
        o=i.strip().split("|")
        
        for w in range(0,len(o),1):
            we=[]
            if (o[w].strip() == "Tx5000"):
                
                for q in range(0,len(o),1):
                    if (q == w):
                        we.append("Tx5000")
                    else:
                        we.append(".")
            print "".join(we).strip()

выход

.Tx5000.
..Tx5000
0
18.03.2021, 23:21

Возможно:

awk -F '[|] ' -v OFS="" -v ok="Tx5000" '
   {for (i=1; i<=NF; i++) if ($i != ok) $i="."; print}
' <<END
TxA1000| Tx5000| TxAc2000
Ms67Ty| AtX0000| Tx5000
END
.Tx5000.
..Tx5000

Ваш разделитель полей выглядит как "вертикальная черта+пробел", поэтому аргумент -Fявляется более конкретным.


Вы должны быть более конкретными в своем заявлении о том, что "не работает с файлом":

$ cat >|file
TxA1000| Tx5000| TxAc2000
Ms67Ty| AtX0000| Tx5000

$ awk -F '[|] ' -v OFS="" -v ok="Tx5000" '
   {for (i=1; i<=NF; i++) if ($i != ok) $i="."; print}
' file
.Tx5000.
..Tx5000

Те же результаты с awk '...' < fileиcat file | awk '...'

2
18.03.2021, 23:21

Теги

Похожие вопросы