Есть ответ о создании файлов в sysfs
на stackoverflow . Они просты в обращении и по умолчанию должны быть доступны без root-прав.
Если файлы имеют общие строки в одном порядке,
join -t, -j1 file1.txt file2.txt
Для получения дополнительной информации см. man join
. По сути, join
два файла, пропуская «непарные строки». Разделителем является запятая -t,
и соединение в поле 1 -j1
.
Использование csvjoin
из Python -на основе csvkit
$ csvjoin -Ic id file\ 1 file\ 2
id,ICD,CT
16214497,008.8,1
27154870,780.79,1
Флаг -I
отключает вывод типа, поэтому поля, подобные 008.8
, обрабатываются как строки, а не как числовые (, что может вызвать повторное -форматирование ). Этот метод прозрачно обрабатывает окончания строк в стиле DOS/Windows.
Альтернативное быстрое соединение с использованием awk:
awk -F, 'NR==FNR {a[$1]; next} $1 in a' file\ 2 file\ 1
Если в вашем файле есть окончания строк DOS/Windows (CRLF вместо обычного LF ), вы можете попробовать
awk -vRS='\r\n' -F, 'NR==FNR {a[$1]; next} $1 in a' file\ 2 file\ 1
или сначала конвертируйте файл, используя dos2unix
, tr
, sed
и т. д.
С grep
иsed
:
Вы можете добавить ^
в начало каждой строки и ,
в конец каждой строки файла2 и использоватьgrep
:
grep -f <(sed 's/^/^/;s/$/,/' file2) file1
Опция -f
считывает шаблоны из файла (в нашем примере не из реального файла, а из подстановки процесса<(…)
).