Нужно удалить набор символов из файла .txt - PullRequest
0 голосов
/ 07 марта 2019

Я ищу способ удаления содержимого из одного .txt файла на основе другого.

Например, у меня есть file.txt с 2000 символов, которые являются случайными и не отсортированы. У меня есть другой файл importantfile.txt с символами 2016 года, которые имеют те же символы, что и file.txt, а также 16 других символов, случайно размещенных в.

Есть ли способ удалить символы в file.txt из importantfile.txt, чтобы найти строку из 16 символов.

Некоторые ошибки, которые я обнаружил в команде diff, заключаются в том, что она напечатает всю строку, поскольку считалось, что одно слово diff file.txt importantfile.txt вернет w881lYoi8042aKGfwj7EjenViinsmbmnWIHJMZ2T9L40KiLr4x485TM3gKmc1Ig8n6VVW82iqjxypCp19sXIMisX4HIkp54lVohqKSuLjjuns91GiEwtTsvN0zhn6c9GZC2GqUKLsy9v1SvSKvdSPBmIJtNoSwr65BBGqLQ1LdHg93kfZoCq5NPxkaYjIyppzYaczGlwZBrsKyjbTEI5B1aWuw6g9xBZ1viussKRP5C5Pq5yO14P8xBDHGugo93mwf7rsjNehNuxDSAt, сокращенное по очевидным причинам, но начало обеих строк будет w881l..... Я также попробовал java-скрипт, используя код importantfile.replace("file","");, но он также возвращает всю строку. Все помогает, спасибо

1 Ответ

0 голосов
/ 07 марта 2019

Если я правильно понимаю, как насчет:

awk '
NR==FNR{str1 = $0; next} {str2 = $0}
END {
    for (i = j = 1; j <= length(str2); ) {
        if (substr(str1, i, 1) == substr(str2, j, 1)) {
            incr = 1
        } else {
            incr = 0
            printf "%s", substr(str2, j, 1)
        }
        i+=incr; j++
    }
    print ""
}' file.txt importantfile.txt

Вывод:

d5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...