У меня есть файл с разделителями табуляции под названием cities
, который выглядит следующим образом:
Washington Washington N 3322 +Geo+Cap+US
Munich München N 3842 +Geo+DE
Paris Paris N 4948 +Geo+Cap+FR
У меня есть текстовый файл с именем countries.txt
, который выглядит следующим образом:
US
DE
IT
Я читаю этот файл в переменную Bash и отправляю его в программу awk следующим образом:
#!/usr/bin/env bash
countrylist=$(<countries.txt)
awk -v countrylist="$countrylist" -f countries.awk cities
И у меня есть файл awk, который должен разбить переменную countrylist
на массив, а затем обработатьфайлы городов так, что мы заменяем "+" VALUE на "" в $ 5, только если VALUE находится в массиве стран.
{
FS = "\t"; OFS = "\t";
split(countrylist, countries, /\n/)
# now gsub efficiently every country in $5
# but only if it's in the array
# i.e. replace "+US" with "" but not
# "+FR"
}
Я застрял в этом последнем бите, потому что я не знаюкак проверить, имеет ли $5
значение из массива countries
и удалить его только тогда.
Заранее большое спасибо!
[Edit]
Theвывод должен быть разделен табуляцией:
Washington Washington N 3322 +Geo+Cap
Munich München N 3842 +Geo
Paris Paris N 4948 +Geo+Cap+FR