как сохранить часть строк в файле на основе информации во втором файле?

из головы, используя 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

Должно работать. Если нет, дайте мне знать, предоставьте результат, чтобы мы все могли увидеть, что пошло не так, и попытаться помочь вам.

1
06.10.2016, 03:44
2 ответа

Вот старый добрый 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
1
27.01.2020, 23:25

Используйте join плюс uniq

join -t '.' -o 1.1,1.2 file1 file2 | uniq

Это "разделит" каждый файл по символу "." и выведет строки, совпадающие по первому полю. Опция "-o" указывает join выводить только первые два поля из файла1

Вы изменили вопрос после того, как я на него ответил, так что теперь это не работает :) Используйте sed для предварительной обработки файлов, чтобы заменить первый "." на табуляцию или какой-нибудь уникальный символ

2
27.01.2020, 23:25

Теги

Похожие вопросы