Как разделить файл на основе столбца, а затем удалить этот столбец в awk или bash - PullRequest
0 голосов
/ 01 октября 2019

У меня есть следующие данные, разделенные табуляцией в файле .txt:

ID1 1.1
ID2 1.1
ID3 1.1
ID4 1.1
ID5 1.1
ID6 1.1.1
ID7 1.1.1
ID8 1.1.1
ID9 1.1.1
ID10 1.1.1

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

Я могу разбить файл следующим образом: awk '{print>$2}' file.txt. Но я не могу сделать вторую часть, где меня просто оставили с идентификаторами.

Ответы [ 2 ]

3 голосов
/ 01 октября 2019

Попробуйте с

awk -F$'\t' '{print $1>$2}' file.txt

Вы говорите awk, что разделитель полей является вкладкой. Затем вы записываете первое поле в файл, который называется вторым полем.

1 голос
/ 01 октября 2019

Не могли бы вы попробовать следующее. Использование close должно избавить нас от ошибки «слишком много файлов открыто за один»

awk '{print $1 >> ($2);close($2)}'  Input_file

Если у вас Input_file с разделителями TAB, попробуйте выполнить следующее.

awk 'BEGIN{FS="\t"} {print $1 >> ($2);close($2)}' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...