【发布时间】:2021-10-24 03:20:56
【问题描述】:
我正在为显示过滤器处理一个 Wireshark 配置文件 (dfilter_buttons),并希望打印出给定名称的过滤器。文件内容如下:
示例输入
"TRUE","test","sip contains \x22Hello, world\x5cx22\x22",""
结果输出应该替换掉转义序列,所以我可以稍后在我的脚本中使用它们:
期望的输出
sip contains "Hello, world\x22"
我的第一关是这样的:
当前解析器
filter_name=test
awk -v filter_name="$filter_name" 'BEGIN {FS="\",\""} ($2 == filter_name) {print $3}' "$config_file"
我的输出是这样的:
电流输出
sip contains \x22Hello, world\x5cx22\x22
我知道我可以通过管道传输到 sed 并匹配这两个确切的序列来处理这两个确切的转义序列,但是有没有一种通用的方法来替换所有的转义序列?我构建的未来过滤器可能会使用更多的转义序列,而不仅仅是 " 和 ,并且我想处理未来的场景。
【问题讨论】:
-
printf 'sip contains \x22Hello, world\x5cx22\x22\n'似乎是一个不错的起点。 (虽然我相信解析 \x22 的是内置的 bash,而且有些 printf 不处理十六进制)