搜索了类似的问题,但找不到任何完全适合我的需求的内容:
我有一个从多个网站抓取的非常大的 HTML 文件,我想替换所有
class="key->from 2nd file"
与
style="xxxx"
目前我使用 sed
- 它运行良好,但仅适用于小文件
while read key; do sed -i "s/class=\"$key\"/style=\"xxxx\"/g" file_to_process; done < keys
当我尝试处理更大的东西时,需要很长时间
示例:
keys - Count: 1233 lines
file_to_ process - Count: 1946 lines
大约需要 40 秒才能完成我需要的处理的 1/10
real 0m40.901s
user 0m8.181s
sys 0m15.253s
最佳答案
未经测试,因为您没有提供任何示例输入和预期输出:
awk '
NR==FNR { keys = keys sep $0; sep = "|"; next }
{ gsub("class=\"(" keys ")\"","style=\"xxxx\"") }
1' keys file_to_process > tmp$$ &&
mv tmp$$ file_to_process
关于linux - 用另一个文件中的字符串替换一个文件中的字符串的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141599/