问题描述
我不会拆分文件
#!/bin/bash
var=bytes
split -b $var filetocut
但是为了做到这一点,我需要知道要剪切多少字节
lookforstring --string="#!/usr/bin/env xdg-open" --file=filetocut
输出是 123
split -b 123 filetocut
bash 中是否有执行此操作的命令
解决方法
您可以将 grep
与 --text
、--byte-offset
和 --only-matching
选项一起使用:
lookforstring() (
string="$1"
filetocut="$2"
grep --text --byte-offset --only-matching "$string" "$filetocut" | awk -F: '{print $1}'
)
(函数体是 POSIX-ly 的子shell,如果这些变量是在脚本的其他地方定义的,则防止覆盖 string
或 filetocut
。)
用法:
lookforstring '#!/usr/bin/env xdg-open' "$filetocut"
--text
选项告诉 grep
像处理文本一样处理二进制文件。默认情况下,grep
仅输出一条说明二进制文件匹配的单行消息,而 --text
选项阻止了这种默认设置。
--byte-offset
与 --only-matching
结合使用时,将在找到匹配部分的文件中打印字节偏移量。
最后的awk
部分是只提取偏移部分。