在我最近的项目中,我想制作一个脚本来转换 WireShark 输出以显示每个时间范围的字节数。有了这个我得到了工作脚本:
./tshark -r dumps/combinedOutput2.pcapng -T fields -e frame.time -e frame.len \
| sed -e 's/\..*\t/\t/' \
| awk -F"\t" '$1==last {sum += $2; next} {
printf("%s %8d bytes/s (%6.2f Mbit/s)\n",last,sum,sum*8/1024/1024);
last=$1;sum=$2}'
在 Windows 中(使用来自 GNU Windows 的 awk 和 sed 命令)引号和反斜杠的转义是不同的。但是我无法以正确的方式转换它并出现以下错误:
awk: {sed -e ^s/\.."\\t/\t/}
awk: ^ backslash not last character on line
tshark: An error occurred while printing packets: Invalid argument.
任何人都可以帮我正确格式化吗?提前致谢!
最佳答案
你能尝试用下面的双引号替换 awk
单引号吗
./tshark -r dumps/combinedOutput2.pcapng -T fields -e frame.time -e frame.len \
| sed -e 's/\..*\t/\t/' \
| awk -F"\t" '$1==last {sum += $2; next} {
printf("%s %8d bytes/s (%6.2f Mbit/s)\n",last,sum,sum*8/1024/1024);
last=$1;sum=$2}'
并使用 \
"
中的双引号
./tshark -r dumps/combinedOutput2.pcapng -T fields -e frame.time -e frame.len \
| sed -e 's/\..*\t/\t/' \
| awk -F"\t" "$1==last {sum += $2; next} {
printf(\"%s %8d bytes/s (%6.2f Mbit/s)\n\",last,sum,sum*8/1024/1024);
last=$1;sum=$2}"
关于linux - 从批处理 Linux 到 Windows 的 awk 和 sed 命令。如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026058/