xxd (2进制)
hexdump (16进制)
二、编辑:
1、biew
2、hexedit
3、vim
Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读
取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,
其它的就跟原来那个一模一样。
要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:
vim -b datafile
这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'
设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。
二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运
行出问题。用 "R" 命令进入替换模式。
文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:
:set display=uhex
另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 字符上时,
该命令的输出看起来就像这样:
27, Hex 1b, Octal 033
文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:
:set nowrap
字 节 位 置
要发现你在文件中的当前字节位置,请用这个命令:
g CTRL-G
其输出十分冗长:
Col 9-16 of 9-16Line 277 of 330Word 1806 of 2058Byte 10580 of 12206
最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'
选项导致换行符字节不同的影响。
要移到文件中某个指定的字节,请用 "Go" 命令。例如,要移到字节 2345:
2345go
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:
vim -b datafile
现在用 xxd 把这个文件转换成十六进制:
:%!xxd
文本看起来像这样:
0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9....tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
最后,用下面的命令把它转换回来:
:%!xxd -r
只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。
Grep 是一个强大的 UNIX 命令,可让您在文件内容中搜索各种参数。当您进行故障排除或调试时,它特别有用。
grep 命令有大量的选项和用例。您可能永远不需要或使用所有这些。但是,您最终会在大多数情况下使用少数几个 grep 命令。
本文列出了最常见的 grep 命令和快速示例:
命令示例:
描述 :不区分大小写的搜索
命令示例:
描述 :匹配后显示 n 行
命令示例:
描述 :在匹配前显示 n 行
命令示例:
描述 :在匹配前后显示 n 行
命令示例:
描述 :显示不匹配的行
命令示例:
描述 :计算匹配行数
命令示例:
描述 :仅显示文件名
命令示例:
描述 :匹配确切的单词
命令示例:
描述 :匹配正则表达式模式
命令示例:
描述 :搜索二进制文件
命令示例:
描述 :递归搜索目录
您可能已经知道要在文件中搜索特定文本或模式,您必须像这样使用 grep:
让我们看看 grep 命令的几个常见用例。
默认情况下,使用 grep 进行的搜索区分大小写,-i您可以使用以下选项忽略大小写匹配:
这样,grep 将返回与 和 匹配的Holmes行holmes。
默认情况下,您只会看到匹配的行,但是,当您对某些问题进行故障排除时,在匹配行之前和/或之后查看几行会有所帮助。
您可以使用-A来显示匹配行之后的行。
下面的命令将显示匹配的行以及匹配后的 5 行。
同样,您可以使用该-B选项在匹配行之前显示行。
下面的命令将在匹配行之前显示 5 行以及匹配行。
我最喜欢的是该选项-C,因为它显示了匹配行之前和之后的行。
下面的命令将显示匹配行之前的 5 行、匹配行和 matchine 行之后的 5 行。
您可以使用 grep 显示与给定模式不匹配的所有行。此“反转匹配”与以下-v选项一起使用:
您可以组合-i和-v选项。
-c您可以使用选项获取与模式匹配的行数,而不是显示匹配的行。这是小写的c。
您可以结合-cand-v选项来获取与给定模式不匹配的行数。您当然可以使用不区分大小写的选项-i。
要显示匹配行的行号,您可以使用该-n选项。
您可以对反向搜索执行相同的 *** 作。
您可以提供多个文件供 grep 搜索。
这可能有效,但更实际的示例是搜索特定类型的文件。例如,如果您只想在 shell 脚本中查找字符串(以 .sh 结尾的文件),您可以使用:
您可以使用 grep option执行递归搜索-r。它将在当前目录及其子目录中的所有文件中搜索给定的模式。
默认情况下,grep 显示匹配的行。如果您对多个文件运行了搜索,并且只想查看哪些文件包含该字符串,则可以使用该-l选项。
假设您想查看哪些 Markdown 文件包含“手册”一词,您可以使用:
默认情况下,grep 将显示包含给定字符串的所有行。你可能并不总是想要那个。如果您正在搜索单词“done”,它还会显示包含“doner”或“abandoned”字样的行。
要使 grep 仅搜索完整的单词,您可以使用以下选项-w:
这样,如果您搜索单词“done”,它只会显示包含“done”的行,而不是“doner”或“abandoned”。
您可以使用正则表达式模式为您的搜索提供超级动力。有一个允许使用正则表达式模式的专用选项-e和-E一个允许使用扩展正则表达式模式的选项。
您可以在同一个 grep 搜索中搜索多个模式。如果要查看包含一种模式或另一种模式的行,可以使用 OR 运算符|。
您可以将多个模式与 OR 运算符一起使用。
AND 运算符没有特定选项。为此,您可以多次使用 grep 和管道重定向。
Grep 默认忽略二进制文件。-a您可以使用该选项使其在二进制文件中搜索,就好像它是文本文件一样。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)