Если вы заранее не знаете, какими могут быть заголовки файлов журнала, мало что можно сделать от до заголовков и с заголовками.
Как следствие, не зная, как использовать строки заголовка, вы не можете различить 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
}'