谁能告诉我如何读取二进制文件中的某些数据并将该数据写入 shell 脚本等中的新二进制文件?我正在使用Linux。
注意::cat file1 > file2
不需要,因为这会写入完整的数据。
要求:读取一些数据并写入,然后再次读取并写入。
while read -n1 ch
do
cat $ch > $output # Tried this, showing error. While writing the data after reading, cat command throws error : No such file or directory.
done < $filename
答案1
cat
是一个用于控制的命令猫enate 文件,通过扩展,还用于将单个文件的内容打印到标准输出。所有cat
要做的就是获取一个文件或任何输入到其标准输入流中的内容并将其打印出来。你它不会打印它的参数,就像其他语言中的语句echo
一样print
,这不是它的用途。
所以你在这里使用了错误的工具来完成这项工作。您希望echo
它打印出您给它的任何内容,并在末尾添加换行符(通常是默认情况下),或者,更好更安全特别是对于二进制数据,printf
:
while read -r -n1 ch
do
printf '%s\n' "$ch" >> "$output"
done < "$filename"
请注意,它-r
告诉read
不要将反斜杠解释为转义符,使用>>
代替>
since>
会$output
在每次迭代中进行覆盖,并且只会看到读取的最后一个字符以及在变量周围使用引号保护它们免受 shell 的 split+glob 扩展影响。