问题标签 [xxd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2688 浏览

bash - 如何在 sed 和 awk(和 perl)中搜索和替换任意文字字符串

假设我们在文件中有一些任意文字,我们需要用其他文字替换。

通常,我们只需使用sed (1) 或awk (1) 并编写如下代码:

但是,如果 $target 和/或 $replacement 可能包含对sed (1) 敏感的字符,例如正则表达式,该怎么办。你可以逃避它们,但假设你不知道它们是什么——它们是任意的,好吗?您需要编写一些代码来转义所有可能的敏感字符 - 包括“/”分隔符。例如

对于这么简单的问题,这很尴尬。

perl (1) 有 \Q ... \E 引号,但即使这样也无法处理$target.

我刚刚发布了答案!所以我真正的问题是,“有没有更好的方法在 sed/awk/perl 中进行文字替换?”

如果没有,我会把它留在这里,以防它有用。

0 投票
1 回答
2135 浏览

c - 一个简单的 C 程序能否模仿默认的“xxd”命令,使其差异输出返回 0?

我正在尝试编写一个 C 可执行文件,它将产生与默认xxd命令相同的输出。例如,假设我有一个名为的相当小的文本文件test.txt和一个名为的可执行文件myxxd

因此,我首先使用以下方法进行比较基准:

然后使用我的可执行文件进行相同的操作,但使用不同的输出文件:

我已经非常接近了一些猜测,但是我的格式总是以某种方式出错,而且我并不真正了解具体是如何xxd生成 hexDumps 的。感觉就像我在这里采取了完全错误的方法,但也许这项任务超出了我目前的 C 知识水平的潜力。

我的代码(另见:https ://pastebin.com/Vjkm8Wb4 ):

0 投票
5 回答
225 浏览

bash - 用不同的随机字符替换十六进制字符(可以使用 awk 吗?)

有一个mac地址,我只需要用一个不同的随机字符(它必须与原始字符不同)替换一个十六进制字符(一个在非常特定的位置)。我使用 xxd 以这种方式完成了它,它可以工作:

我的脚本的问题是 usingxxd意味着另一个依赖项......我想避免它(并非所有 Linux 默认都包含它)。我对此使用hexdump命令有另一种解决方法,但使用它我处于同一阶段...但是我的脚本已经具有强制awk依赖项,所以...可以使用来完成awk吗?我awk在这里需要一个主人:) 谢谢。

0 投票
0 回答
48 浏览

binary - 二进制文件如何存储在磁盘上

我曾使用xxd将二进制转换为 ascii 格式的实用程序,反之亦然,但我不确定它在幕后做了什么。

假设我有以下 hexdump:

显然这是ASCII格式。将此行保存在磁盘上与 VS 以二进制格式保存有什么区别?单个字符如何0以 ascii VS 二进制格式存储在磁盘上?

0 投票
1 回答
2189 浏览

linux - 在 VI 和 XXD 中打开二进制文件

我正在尝试使用 Ubuntu 在 Linux 中修改可执行程序的二进制数据。

我有一个名为a.out. 我可以使用xxd a.out | less. 然后在另一个终端窗口中,我运行vi a.out.

Vi 的数据在很多地方与 xxd 输出略有不同。两者都将地址显示到文件中,但数据不同。例如,在可执行文件的最开头,在 xxd 中有两个字节C006,在 VI 中显示为c380

有谁知道他们为什么不同?看来VI出于某种原因正在修改一些数据。

0 投票
3 回答
172 浏览

regex - 使 sed 正则表达式交替遵循从左到右的优先级?

我正在尝试使用正则表达式从 格式化一些二进制文件xxd -b,但为了简单地演示这一点,我将向您展示我期望发生的事情:

要删除的正则表达式:/1x|1.*/

文本:1x21y3333333313333->2

如果所有出现的1x都被删除,那么从第一个 1 开始出现的所有内容都应该被删除。发生了什么应该立即显而易见,但如果不是,请使用 this。关键是如果1x匹配,则应该中止模式的其余部分。

这是echo "AA" | xxd -b(的绑定转储AA\n)的输出:

我的目标是 1. 删除每个字节的第一个 0(ascii = 7 位)和 2. 删除字符串的其余部分,以便只保留实际的二进制文件。所以我把它输入sed 's/ 0//g'

添加第二步,sed -E 's/ 0| .*//g'

显然,我希望得到:

我尝试过但没有完成工作的事情:

  • xxd可以-g0合并列,但它保留每个字节中的第一个零(每个字符占用一个字节,而不是 7 位)
  • -r

与此同时,我将使用 perl,但这种行为让我感到困惑,也许这里有一个原因(教训)?

0 投票
1 回答
420 浏览

macos - 没有空格的十六进制转储字符串

我想使用 xxd 将字符串转换为十六进制。

问题是它在十六进制末尾添加了一个“0a”。

命令

输出:68656c6c6f20776f726c640a

预期:68656c6c6f20776f726c64(没有 0a)

0 投票
1 回答
155 浏览

vim - xxd 没有行号但保留字符编码

我知道使用-p可以以普通的 hexdump 样式输出,但我想将字符编码保留在右侧列中并分离输出。xxp有什么选择吗?

0 投票
2 回答
887 浏览

bash - 为什么xxd要加字符?

我正在尝试od从没有工具hexdump的系统中撤消命令。base64

我这样做(当然,实际上,编码发生在“小”系统上,解码是在我的工作站上完成的,但是为了测试它,我先在一行中尝试整个方式):

当然,echo TEST这里只是一个占位符,例如。cat test.bmp或其他任何东西。

看起来是对的,但它是不同的,如果我们od再次给出它,我们可以在这里看到:

为什么要xxd -r添加那些00s?

0 投票
2 回答
8003 浏览

linux - 如何使用 hexdump 或 xxd 获取特定格式?

我需要特定格式的许多文件的 hexdumps:

但是,使用 hexdump 或 xxd 我只能设法在地址后面加上冒号和右边的 ASCII 文本,例如:

我使用命令得到了上述内容

有任何想法吗?