问题标签 [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.
bash - 如何在 sed 和 awk(和 perl)中搜索和替换任意文字字符串
假设我们在文件中有一些任意文字,我们需要用其他文字替换。
通常,我们只需使用sed (1) 或awk (1) 并编写如下代码:
但是,如果 $target 和/或 $replacement 可能包含对sed (1) 敏感的字符,例如正则表达式,该怎么办。你可以逃避它们,但假设你不知道它们是什么——它们是任意的,好吗?您需要编写一些代码来转义所有可能的敏感字符 - 包括“/”分隔符。例如
对于这么简单的问题,这很尴尬。
perl (1) 有 \Q ... \E 引号,但即使这样也无法处理$target
.
我刚刚发布了答案!所以我真正的问题是,“有没有更好的方法在 sed/awk/perl 中进行文字替换?”
如果没有,我会把它留在这里,以防它有用。
c - 一个简单的 C 程序能否模仿默认的“xxd”命令,使其差异输出返回 0?
我正在尝试编写一个 C 可执行文件,它将产生与默认xxd
命令相同的输出。例如,假设我有一个名为的相当小的文本文件test.txt
和一个名为的可执行文件myxxd
因此,我首先使用以下方法进行比较基准:
然后使用我的可执行文件进行相同的操作,但使用不同的输出文件:
我已经非常接近了一些猜测,但是我的格式总是以某种方式出错,而且我并不真正了解具体是如何xxd
生成 hexDumps 的。感觉就像我在这里采取了完全错误的方法,但也许这项任务超出了我目前的 C 知识水平的潜力。
我的代码(另见:https ://pastebin.com/Vjkm8Wb4 ):
bash - 用不同的随机字符替换十六进制字符(可以使用 awk 吗?)
有一个mac地址,我只需要用一个不同的随机字符(它必须与原始字符不同)替换一个十六进制字符(一个在非常特定的位置)。我使用 xxd 以这种方式完成了它,它可以工作:
我的脚本的问题是 usingxxd
意味着另一个依赖项......我想避免它(并非所有 Linux 默认都包含它)。我对此使用hexdump
命令有另一种解决方法,但使用它我处于同一阶段...但是我的脚本已经具有强制awk
依赖项,所以...可以使用来完成awk
吗?我awk
在这里需要一个主人:) 谢谢。
binary - 二进制文件如何存储在磁盘上
我曾使用xxd
将二进制转换为 ascii 格式的实用程序,反之亦然,但我不确定它在幕后做了什么。
假设我有以下 hexdump:
显然这是ASCII格式。将此行保存在磁盘上与 VS 以二进制格式保存有什么区别?单个字符如何0
以 ascii VS 二进制格式存储在磁盘上?
linux - 在 VI 和 XXD 中打开二进制文件
我正在尝试使用 Ubuntu 在 Linux 中修改可执行程序的二进制数据。
我有一个名为a.out
. 我可以使用xxd a.out | less
. 然后在另一个终端窗口中,我运行vi a.out
.
Vi 的数据在很多地方与 xxd 输出略有不同。两者都将地址显示到文件中,但数据不同。例如,在可执行文件的最开头,在 xxd 中有两个字节C006
,在 VI 中显示为c380
有谁知道他们为什么不同?看来VI出于某种原因正在修改一些数据。
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,但这种行为让我感到困惑,也许这里有一个原因(教训)?
macos - 没有空格的十六进制转储字符串
我想使用 xxd 将字符串转换为十六进制。
问题是它在十六进制末尾添加了一个“0a”。
命令:
输出:68656c6c6f20776f726c640a
预期:68656c6c6f20776f726c64(没有 0a)
vim - xxd 没有行号但保留字符编码
我知道使用-p
可以以普通的 hexdump 样式输出,但我想将字符编码保留在右侧列中并分离输出。xxp
有什么选择吗?
bash - 为什么xxd要加字符?
我正在尝试od
从没有工具hexdump
的系统中撤消命令。base64
我这样做(当然,实际上,编码发生在“小”系统上,解码是在我的工作站上完成的,但是为了测试它,我先在一行中尝试整个方式):
当然,echo TEST
这里只是一个占位符,例如。cat test.bmp
或其他任何东西。
这看起来是对的,但它是不同的,如果我们od
再次给出它,我们可以在这里看到:
为什么要xxd -r
添加那些00
s?
linux - 如何使用 hexdump 或 xxd 获取特定格式?
我需要特定格式的许多文件的 hexdumps:
但是,使用 hexdump 或 xxd 我只能设法在地址后面加上冒号和右边的 ASCII 文本,例如:
我使用命令得到了上述内容
有任何想法吗?