首页 > 解决方案 > 希望从 .txt 文件中删除一组字符

问题描述

我正在寻找一种.txt基于另一个文件从一个文件中删除内容的方法。

例如,我有一个file.txt随机且未排序的 2000 个字符。我有另一个importantfile.txt包含 2016 个字符的文件,该文件具有与file.txt随机放置的 16 个其他字符相同的字符。

有什么方法可以删除其中的字符file.txtimportantfile.txt找到 16 个字符的字符串。

我在 diff 命令中发现的一些错误是它会打印整个字符串,因为它被认为一个单词diff file.txt importantfile.txt会因为明显的原因返回w881lYoi8042aKGfwj7EjenViinsmbmnWIHJMZ2T9L40KiLr4x485TM3gKmc1Ig8n6VVW82iqjxypCp19sXIMisX4HIkp54lVohqKSuLjjuns91GiEwtTsvN0zhn6c9GZC2GqUKLsy9v1SvSKvdSPBmIJtNoSwr65BBGqLQ1LdHg93kfZoCq5NPxkaYjIyppzYaczGlwZBrsKyjbTEI5B1aWuw6g9xBZ1viussKRP5C5Pq5yO14P8xBDHGugo93mwf7rsjNehNuxDSAt缩短,但是两个字符串的开头都是w881l.....我也尝试了 java 脚本,使用importantfile.replace("file","");代码但它返回整个字符串也是如此。有什么帮助,谢谢

标签: javascriptlinuxbashshell

解决方案


如果我理解正确性,如何:

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

推荐阅读