我需要在linux的shell下,完成在一个文件第20字节的读取4字节,然后将读取的内容复制到第30字节位置。
然后保存修改后的文件。该文件大小为3M左右。请大侠尽量给出详细些的实现方式。测试可行之后,财富送上。...
然后保存修改后的文件。该文件大小为3M左右。
请大侠尽量给出详细些的实现方式。
测试可行之后,财富送上。 展开
请大侠尽量给出详细些的实现方式。
测试可行之后,财富送上。 展开
1个回答
展开全部
我的实验如下:
首先,建一个41字节的文件file1,查看一下内容。
$ od -tc -Ax file1
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d e 1 2 3 4 5 \n
000029
由于用于实验的是一个单行文本文件,末尾有一个换行符。
先拷贝前30字节到file2中。
$ dd if=./file1 of=./file2 bs=30 count=1
记录了1+0 的读入
记录了1+0 的写出
30字节(30 B)已复制,4.2609e-05 秒,704 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5
00001e
然后,读取file1中的21~24共4个字节并附加到file2后面。
$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1
记录了1+0 的读入
记录了1+0 的写出
4字节(4 B)已复制,6.2934e-05 秒,63.6 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d
000022
最后,将file1第30个字节之后的内容全部读取出来并附加到file2后面。
$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30
记录了0+1 的读入
记录了0+1 的写出
11字节(11 B)已复制,6.1464e-05 秒,179 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d a b c d e 1 2 3 4 5 \n
00002d
这样就可以了。
可以写成一个shell脚本(如下),并在每条dd命令中使用status=noxfer来抑制命令回显,使其静默执行。
#!/bin/bash
dd if=./file1 of=./file2 status=noxfer bs=30 count=1 >/dev/null
dd if=./file1 of=./file2 status=noxfer conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1 >/dev/null
dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30 >/dev/null
exit 0
首先,建一个41字节的文件file1,查看一下内容。
$ od -tc -Ax file1
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d e 1 2 3 4 5 \n
000029
由于用于实验的是一个单行文本文件,末尾有一个换行符。
先拷贝前30字节到file2中。
$ dd if=./file1 of=./file2 bs=30 count=1
记录了1+0 的读入
记录了1+0 的写出
30字节(30 B)已复制,4.2609e-05 秒,704 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5
00001e
然后,读取file1中的21~24共4个字节并附加到file2后面。
$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1
记录了1+0 的读入
记录了1+0 的写出
4字节(4 B)已复制,6.2934e-05 秒,63.6 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d
000022
最后,将file1第30个字节之后的内容全部读取出来并附加到file2后面。
$ dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30
记录了0+1 的读入
记录了0+1 的写出
11字节(11 B)已复制,6.1464e-05 秒,179 kB/秒
$ od -tc -Ax file2
000000 a b c d e 1 2 3 4 5 a b c d e 1
000010 2 3 4 5 a b c d e 1 2 3 4 5 a b
000020 c d a b c d e 1 2 3 4 5 \n
00002d
这样就可以了。
可以写成一个shell脚本(如下),并在每条dd命令中使用status=noxfer来抑制命令回显,使其静默执行。
#!/bin/bash
dd if=./file1 of=./file2 status=noxfer bs=30 count=1 >/dev/null
dd if=./file1 of=./file2 status=noxfer conv=notrunc oflag=append ibs=4 skip=5 obs=4 count=1 >/dev/null
dd if=./file1 of=./file2 conv=notrunc oflag=append ibs=30 skip=1 obs=30 >/dev/null
exit 0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询