【发布时间】:2021-09-05 17:58:06
【问题描述】:
我有一堆类似于 xml 的文本。
<File>
<abc1>
<Hex>
<item>
<data>AB CD 34 43</data>
</item>
</Hex>
</abc1>
</File>
我使用一个应用程序(ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接,解释器 /lib64/ld-linux-x86-64.so.2,用于 GNU/Linux 2.6。 32,未剥离),它将文件作为参数并对其进行解码。
我可以成功运行:
./application /tmp/file and it decodes correctly
我还可以捕获所有内容,包括包含下面十六进制的行(这很好用,但当然,不能将所有数据都输入文件然后运行它 - 需要动态地使用变量来完成:
./application /tmp/file | sed '/AB CD 34 43/q'
但我无法做的是传递一个变量而不是十六进制字符串
./application /tmp/file | sed '/`echo -n "$value"`/q'
我不介意我使用什么,sed/awk/grep。
我的主要目标是将所有内容提取到十六进制地址,然后运行另一个命令以在另一个方向复制相同的内容,如果您愿意的话,我只剩下一个完整的“框架”。然后我可以根据帧大小将它拖尾,这样它就只包含一个完整的帧。
【问题讨论】:
-
谢谢@KamilCuk 我认为你是对的。令人沮丧,因为我快到了,但最好让它正确,xmlstarlet 可能有更简单的方法,谢谢先生!
标签: variables awk sed grep echo