У меня есть два файла TSV, и я хочу объединить их на основе общности в первом столбце. Столбец без заголовка, но данные - это имя каждой компании.Объединить TSV на основе столбца, для нескольких строк
У меня есть awk-код, который близок к тому, что я хочу. Проблема в том, что я хочу объединить информацию за каждый раз, когда упоминается компания, а не только в первый раз.
items.tsv выглядит следующим образом:
IBM 0.0107 100.0%
APPL 0.0457 98.0%
GOOGL 0.0227 100.0%
GOOGL 0.0197 100.0%
GOOGL 0.0997 90.0%
GOOGL 0.0397 10.0%
vendors.tsv:
IBM Dec 2011
APPL Jan 2014
GOOGL June 2015
С кодом у меня есть, выход:
IBM 0.0107 100.0% Dec 2011
APPL 0.0457 98.0% Jan 2014
GOOGL 0.0227 100.0% June 2015
Три линии отсутствуют ! Нужный выход заключается в следующем:
IBM 0.0107 100.0% Dec 2011
APPL 0.0457 98.0% Jan 2014
GOOGL 0.0227 100.0% June 2015
GOOGL 0.0197 100.0% June 2015
GOOGL 0.0997 90.0% June 2015
GOOGL 0.0397 10.0% June 2015
Это код, который я использую:
awk '
BEGIN {FS=OFS="\t"}
NR==FNR {a[$1] = $2 FS $3; next}
$1 in a {print $1, a[$1], $2, $3}
' items.tsv vendors.tsv
порядок строк не имеет значения. Данные разделяются вкладками \ t. Я надеюсь, что кто-то там может помочь!
(Обратите внимание, что код AWK идентичен тому, что я использовал, вывод напечатал мной, так \ т есть некоторые места, регулярное пространство и т.д.)