bash – 为多个sed替换优化shell脚本
发布时间:2020-12-15 17:01:42 所属栏目:安全 来源:网络整理
导读:我有一个文件,其中包含替换对的列表(大约100个),sed用它来替换文件中的字符串. 对如下: old|newtobereplaced|replacement(stuffiwant).*(too)|12 我目前的代码是: cat replacement_list | while read ido old=$(echo "$i" | awk -F'|' '{print $1}') #du
我有一个文件,其中包含替换对的列表(大约100个),sed用它来替换文件中的字符串.
对如下: old|new tobereplaced|replacement (stuffiwant).*(too)|12 我目前的代码是: cat replacement_list | while read i do old=$(echo "$i" | awk -F'|' '{print $1}') #due to the need for extended regex new=$(echo "$i" | awk -F'|' '{print $2}') sed -r "s/`echo "$old"`/`echo "$new"`/g" -i file done 我不禁想到有一种更优化的方式来进行替换.我尝试先转动循环以首先运行文件的行,但结果却要贵得多. 有没有其他方法来加速这个脚本? 编辑 感谢所有快速回复.在选择答案之前,让我尝试各种建议. 要澄清一件事:我还需要子表达式/组功能.例如,我可能需要的一个替换是: ([0-9])U|10 #the extra brackets and escapes were required for my original code 有关改进的一些细节(待更新): >方法:处理时间
您可以使用sed生成正确格式化的sed输入:
sed -e 's/^/s|/; s/$/|g/' replacement_list | sed -r -f - file (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |