我有一個非常大的字符串,我需要格式化,以便每行不超過16個字節。我使用for循環上升了16個字節,但腳本停止解析剩餘的字符串。我需要在第16個字節之後添加一個新行,以便下一行繼續下一個16個字節。使用awk格式化輸出
$ 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
解:(提供者:克里斯)
awk 'NF{gsub(/.{16}/,"&\n",$0);print $0}' text | sed 's/../ &/g' | sed 's/^ //g'
45 a0 00 53 1e e1 00 00
36 11 8b 94 72 04 15 23
cb 5c 87 01 08 4b 08 4b
00 3f f3 44 32 13 00 2f
84 45 f0 a4 a3 d7 00 00
01 80 0e 29 10 53 db e7
15 7f aa 3e a0 2f 85 00
04 72 04 15 23 85 00 04
7c c3 68 53 87 00 0c 02
0b 92 1f 71 96 97 97 74
f9 00 00 00
感謝克里斯。你能不能建議這個awk的實現? –
請參閱我編輯的答案。 – Chris
完美。奇蹟般有效! –