使用awk格式化输出

使用awk格式化输出,awk,Awk,我有一个非常大的字符串,需要对其进行格式化,以便每行显示的字节不超过16个。我使用for循环增加了16个字节,但随后脚本停止解析剩余的字符串。我需要在第16个字节后添加一个新行,以便接下来的16个字节继续在下一行 $ echo "45a000531ee1000036118b9472041523cb5c8701084b084b003ff3443213002f8445f0a4a3d7000001800e291053dbe7157faa3ea02f850004720415238500047cc3685

我有一个非常大的字符串,需要对其进行格式化,以便每行显示的字节不超过16个。我使用for循环增加了16个字节,但随后脚本停止解析剩余的字符串。我需要在第16个字节后添加一个新行,以便接下来的16个字节继续在下一行

$ echo "45a000531ee1000036118b9472041523cb5c8701084b084b003ff3443213002f8445f0a4a3d7000001800e291053dbe7157faa3ea02f850004720415238500047cc3685387000c020b921f7196979774f9000000" 
|  sed 's/../ &/g' | sed 's/^ //' 
| awk 'ORS="\n"{ for (i=1; i<17;i++) printf ("%s ", $i)}'
45 a0 00 53 1e e1 00 00 36 11 8b 94 72 04 15 23
尝试:

命令:

echo "yourLongString" | sed 's/.\{16\}/&\n/g' 
输出:

45a000531ee10000
36118b9472041523
cb5c8701084b084b
003ff3443213002f
8445f0a4a3d70000
01800e291053dbe7
157faa3ea02f8500
0472041523850004
7cc3685387000c02
0b921f7196979774
f9000000
编辑:

或者呆呆地:

gawk 'NF{gsub(/.{16}/,"&\n",$0);print $0}'
HTH Chris

试试:

命令:

echo "yourLongString" | sed 's/.\{16\}/&\n/g' 
输出:

45a000531ee10000
36118b9472041523
cb5c8701084b084b
003ff3443213002f
8445f0a4a3d70000
01800e291053dbe7
157faa3ea02f8500
0472041523850004
7cc3685387000c02
0b921f7196979774
f9000000
编辑:

或者呆呆地:

gawk 'NF{gsub(/.{16}/,"&\n",$0);print $0}'

HTH Chris

折叠
折叠长线:

fold -b16 | sed 's/../& /g'

折叠
折叠长线:

fold -b16 | sed 's/../& /g'

谢谢你,克里斯。你能建议一个awk实现吗?QQ:我们真的需要在脚本的开头使用NF吗?只是想知道它的用途。NF过滤掉所有的空行。谢谢Chris。你能建议一个awk实现吗?QQ:我们真的需要在脚本的开头使用NF吗?只是想知道它的用途。NF会过滤掉所有的空行。