Удаление информации о пользователе c из файла журнала - PullRequest
1 голос
/ 18 апреля 2020

Я должен удалить указанную пользователем информацию c из всех файлов журнала, то есть имя пользователя, адрес электронной почты и номер телефона.

Эта информация, однако, может находиться в отдельном столбце для каждого файла журнала; кроме того, файлы журналов не имеют определенного формата c.

Например, файл журнала выглядит так:

CustomerID City     Cname   CPhone   Cemailid
1234       SEA  George 4468689901 goerge@xyz.com
2234       NYK  Jose   7712393223 jose@abc.com

, тогда как другой файл выглядит так:

Customername CustID email         Phone     city
Philip       3345  phil@qqq.com 2233442233 VEG
Tom          2267  tom@kkk.com  8877343434 DAL

Есть ли какая-нибудь идея, с помощью которой мы можем найти подход?

1 Ответ

0 голосов
/ 18 апреля 2020

Если вы заранее не знаете, какими могут быть заголовки файлов журнала, мало что можно сделать от до заголовков и с заголовками.

Как следствие, не зная, как использовать строки заголовка, вы не можете различить guish между Philip living is Seattle и Mr Seattle жить в Philip городе, и все, что вы можете сделать, это разработать некоторые способы распознавания некоторых полей.

Это, например, распознает электронную почту, сопоставляя @ и телефон, сопоставляя более 4 цифр, а затем удаляет эти столбцы во всех строках, кроме строка заголовка.

awk '
NR == 1 { print; next }
NR == 2 {
  for (i = 1; i <= NF; ++i) {
    if (match($i,/@/)) { email = i }
    if (match($i,/^[0-9]{5,}$/)) { phone = i }
  }
}
{
  $email = ""
  $phone = ""
  print $0
}'

Однако, если вы делаете , знаете, что заголовок пользовательских c столбцов всегда соответствует некоторому регулярному выражению, тогда вы можете сделать это:

awk '
NR == 1 {
  for (i = 1; i <= NF; ++i) {
    if (match(tolower($i),/name/)) { name = i }
    if (match(tolower($i),/phone/)) { phone = i }
    if (match(tolower($i),/mail/)) { mail = i }
  }
}
{
  $name = ""
  $mail = ""
  $phone = ""
  print $0
}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...