из головы, используя parted и vfat fs (при условии, что вам нужна совместимость с Windows):
ПРИМЕЧАНИЕ: при условии, что / dev / sda является ваш диск должен быть отформатирован (!)
parted
(parted) select /dev/sda
(parted) mklabel gpt
(parted) mkpart
--> pick a name <enter>
--> pick an fs (ext2 will do) <enter>
0% <enter>
100% <enter>
print
Выше должно быть показано, что вы создали один раздел, используя полный размер диска. Затем мы создадим файловую систему:
mkfs.vfat /dev/sda1
Должно работать. Если нет, дайте мне знать, предоставьте результат, чтобы мы все могли увидеть, что пошло не так, и попытаться помочь вам.
Вот старый добрый awk
staple
awk -F. 'NR==FNR {a[$1]++; next} $1 in a' file2 file1
c1.212 3.4 90
c1.011 4.4 33
c3.0911 8.3 83
c3.1121 4.3 23
c3.2223 2.2 22
c3.1211 2.2 12
c5.123 11 01
c5.113 11 01
Или, если предположить, что идентификаторы группы ( c1
, c2
и т. Д.) Больше нигде в файле не отображаются, вы можете использовать cut
для извлечения идентификаторов, а затем grep
чтобы сопоставить их в вашем первом файле, например
$ cut -d. -f1 file2 | grep -Fwf- file1
c1.212 3.4 90
c1.011 4.4 33
c3.0911 8.3 83
c3.1121 4.3 23
c3.2223 2.2 22
c3.1211 2.2 12
c5.123 11 01
c5.113 11 01
Используйте join
плюс uniq
join -t '.' -o 1.1,1.2 file1 file2 | uniq
Это "разделит" каждый файл по символу "." и выведет строки, совпадающие по первому полю. Опция "-o" указывает join выводить только первые два поля из файла1
Вы изменили вопрос после того, как я на него ответил, так что теперь это не работает :) Используйте sed
для предварительной обработки файлов, чтобы заменить первый "." на табуляцию или какой-нибудь уникальный символ