объединять файлы с общей функцией в имени - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу объединить файлы, которые имеют уникальный идентификатор в имени.

мои файлы выглядят так

A_1.file

A_2.file

A_3.file

B_1.file

B_2.file

B_3.file

и т.д ...

То, что я хочу, - это то, что будет их кошачьим

A.file

B.file

Но на самом деле у меня есть сотни файлов с гораздо более сложными идентификаторами, чем "A" или "B". Так что просто сказать «cat A * .file> A.file» не сработает, потому что для этого потребуется вручную вводить каждый идентификатор последовательности. Поэтому я думаю, что это, по сути, моя проблема, объединение файлов с общим уникальным идентификатором. Идентификатор интереса сначала в имени файла и отделяется "_", так что, возможно, есть хорошее решение для регулярных выражений. Я прошу прощения, если это было решено, все, что я нашел, было или достаточно другим и слишком сложным. Я слишком долго возился с этим.

спасибо

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать

awk -F _ 'FNR==1 {out=$1".file"}  {print > out}' *_*

Таким образом, вы избегаете сбора идентификаторов и выполнения команд для каждого найденного идентификатора.

-F _: поле sep
FNR==1: первая строка каждого файла
out=$1".file": создать выходное имя файла

...