bash - 这可以更快地完成吗(读取文件,替换 [sed],写入新文件)

标签 bash file sed substitution

我在我的 bash 脚本中使用这段代码来读取一个包含多个十六进制字符串的文件,进行一些替换,然后将其写入一个新文件。大约 300 Mb 大约需要 30 分钟。
我想知道这是否可以更快地完成?

sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
 printf "%b" ${line} >> ${out_file}
 printf '\000\000' >> ${out_file}
done

更新:

我做了一些测试并得到了以下结果:

获胜者是:


sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
    printf "%b" ${line} >> ${out_file}
    printf '\000\000' >> ${out_file}
done

真实 44m27.021s
用户 29m17.640s
sys 15m1.070s


sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
    printf '%b\000\000' ${line} 
done >> ${out_file}

真实 18m50.288s
用户 8m46.400s
sys 10m10.170s


export LANG=C
sed 's/$/0000/' ${in_file} | xxd -r -ps >> ${out_file}

真实 0m31.528s
用户 0m1.850s
sys 0m29.450s


最佳答案

你需要 Vim 自带的 xxd 命令。

export LANG=C
sed 's/$/0000/' ${in_file} | xxd -r -ps > ${out_file}

关于bash - 这可以更快地完成吗(读取文件,替换 [sed],写入新文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694503/

相关文章:

android - 转换文件 : Uri to File in Android

actionscript-3 - AS3/AIR - 创建纯文本文件?

bash - 使用 Sed 搜索/替换 Bash 脚本中的变量

linux - 使用 awk 或 sed 删除特定字符

linux - 如何在行尾负 1 位置添加带有 sed 的文本

bash - 如何在 bash 中使用 grep 显示所有以 1 个大写字母开头的单词?

spring - 我在运行以交互模式打开 docker 容器并执行一些命令的 bash 脚本时遇到问题

java - getFilesDir() 导致空指针异常

macos - 主目录中的 .bashrc 应该自动加载吗?

linux - Bash 中的自定义路径补全