Замена строки в большом файле

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

2
01.09.2016, 02:23
1 ответ

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

Следующее будет читать file_A.txt и file_B.txt во временную базу данных в памяти и выводить результаты в файл TSV MODIFIED-file_B.txt

sqlite3 -separator $'\t' << EOF  > MODIFIED-file_B.txt
CREATE TABLE a ( id INTEGER PRIMARY KEY, name );
.import file_A.txt a
CREATE TABLE b (id1 INTEGER,name1 TEXT,id2 INTEGER,name2 TEXT);
.import file_B.txt b
SELECT b.id1,
       ifnull((SELECT name from a WHERE a.id=b.id1),b.name1),
       b.id2, 
       ifnull((SELECT name from a WHERE a.id=b.id2),b.name2)
FROM b;
EOF

Это считывает каждый файл в отдельную таблицу, а затем выводит таблица b с вашими заменами A, если они доступны, в противном случае возвращает исходное B_name.

Если использование памяти вызывает беспокойство, вы можете запустить его с именем файла, например sqlite3 -separator $ '\ t'porary.db для создания временного файла.

0
27.01.2020, 22:45

Теги

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