Соответствие номеров столбцов из двух разных текстовых файлов - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть два текстовых файла разного размера. Первый из них ниже example1.txt содержит только один столбец чисел:

101
102
103
104
111
120
120
125
131
131
131
131
131
131

И второй текстовый файл example2.txt имеет два столбца:

101     3
102     3
103     3
104     4
104     4
111     5
120     1
120     1
125     2
126     2
127     2
128     2
129     2
130     2
130     2
130     2
131     10
131     10
131     10
131     10
131     10
131     10
132     10

Первый столбец в примере1 .txt - это подмножество первого столбца в example2.txt. Номера второго столбца в example2.txt - это связанные значения с первым столбцом.

Что я хочу сделать, это получить связанный второй столбец example1.txt, следующий за example2.txt. Я пытался, но пока не мог понять. Любые предложения или решения в bash, awk будут оценены

Поэтому результат будет:

101     3
102     3
103     3
104     4
111     5
120     1
120     1
125     2
131     10
131     10
131     10
131     10
131     10
131     10

ОБНОВЛЕНИЕ: Я пытался сделать столбец соответствие как:

awk -F'|' 'NR==FNR{c[$1]++;next};c[$1] > 0' example1.txt example2.txt > output.txt

В обоих файлах первый столбец идет в порядке возрастания, но частота одинаковых чисел может не совпадать. Например, частота 104 равна единице в example1.txt, но в примере2.txt она указана дважды. Важно то, что значение второго столбца будет таким же, как и для example1.txt. Просто посмотрите ожидаемый результат в конце.

1 Ответ

2 голосов
/ 08 апреля 2020
$ awk 'NR==FNR{a[$1]++; next} ($1 in a) && b[$1]++ < a[$1]' f1 f2
101     3
102     3
103     3
104     4
111     5
120     1
120     1
125     2
131     10
131     10
131     10
131     10
131     10
131     10

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

($1 in a) && b[$1]++ < a[$1] - главное отличие от вашего решения. Это проверяет, существует ли поле, а также что количество не превышает количество первого файла.

Кроме того, не уверен, почему вы устанавливаете разделитель полей как |, потому что такого символа нет в образец дан.

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