我想将文本文件的选定部分对齐每列9个字节.
例如,假设我的文本文件如下所示.
00 2f c6 b8 29 fd 02 37 11 00 9f 74 34 0b 60 72 38 20 00 9e 61 33 8e ab 8a c0 09
00 fa f0 66 6d 0c 44 d6 24 00 a1 11 9d a2 13 a5 b3 83
00 2f c6 b8 29 fd 02 37 11
00 9f 74 34 0b 60 72 38 20
00 9e 61 33 8e ab 8a c0 09
00 fa f0 66 6d 0c 44 d6 24
00 a1 11 9d a2 13 a5 b3 83
最简单的方法是什么?是否可以使用sed或awk在bash中执行此操作?
或者更好的方法来构建问题将是我已经格式化我的输入序列,如下所示.
00 88 ec 40 bf 94 1d 63
f4 00 04 1c 4e 06 d0 2c
2e f9 00 90 03 51 d5 71
cc 86 79 00 24 6b 22 30
b6 66 0f 5f 00 c1 cd a5
c8 45 b9 88 85 00 c0 de
ae 47 d9 91 f9 d3 00 5b
这是每行8个字节.如果你在第1行仔细注意第一个字节是00.在第2行第二个字节是00而在第3行第三个字节是00.I想要对齐整个文件以便所有行从00.hope开始,这有帮助
解决方法:
无论一行上有多少字节,这都可以工作
sed ':a $!N;s/\n/ /;ta;s/\(\(\([[:xdigit:]]\)\{2\} *\)\{8\}\([[:xdigit:]]\)\{2\}\) */\1\n/g'
输入
$cat alignbyte
00 2f c6
b8 29 fd 02
37 11 00 9f 74 34 0b 60 72 38
20 00 9e 61 33 8e ab 8a c0 09
00 fa f0 66
6d 0c 44 d6 24
00 a1 11 9d a2 13 a5 b3 83
产量
$sed ':a $!N;s/\n/ /;ta;s/\(\(\([[:xdigit:]]\)\{2\} *\)\{8\}\([[:xdigit:]]\)\{2\}\) */\1\n/g' alignbyte
00 2f c6 b8 29 fd 02 37 11
00 9f 74 34 0b 60 72 38 20
00 9e 61 33 8e ab 8a c0 09
00 fa f0 66 6d 0c 44 d6 24
00 a1 11 9d a2 13 a5 b3 83
我只是注意到你的输入文件在每组9个字节之后似乎有两个空格,除了最后一组.如果这是一个拼写错误,并且所有9个字节的集合确实被两个空格分隔,那么得到你想要的命令就是这样:
sed 's/ /\n/g' file
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。