【发布时间】:2020-01-01 08:28:42
【问题描述】:
我有一个这样的文件:
0000000 4130b00f adfbad7e ad96adbc ada0ad6e ad91adf4 ae2eae9e 3b64b1bc ab89a4b0 A0.....~.......n........;d......
0000020 a3c0a865 a18ba57e a721a531 a608a64e a807aaf9 ae6ba418 ac2938c2 ad23abb6 ...e...~.!.1...N.....k...)8..#..
0000040 2cd6a1d9 3f583428 a4e1a659 a2eca7e1 4116aa10 2d5433ff 29483114 30153ac8 ,...?X4(...Y....A...-T3.)H1.0.:.
0000060 37ab3cfd a9fca910 adb13542 9dec8b99 3d752fde 340230c3 2eeb33bd 33d83a5a 7.<.......5B....=u/.4.0...3.3.:Z
0000080 38aab0b1 349ca9cf b0603e00 3b2839ea a6082f4d 2c7c9df9 3d4630aa a90f3936 8...4....`>.;(9.../M,|..=F0...96
00000a0 a6081fb0 b0a13c1c a2cc39d2 b17caa7c a5f62ada 3321a9bd a1a9aefe 36099f1c ......<...9..|.|..*.3!......6...
00000c0 3b10a326 3806ae88 acde9fdc a3a630a0 3d562e82 a4a12e85 390e35aa a5902078 ;..&8.........0.=V......9.5... x
00000e0 ac6329d6 36263802 33983c16 303ea8f8 a5302eb3 34ee35e8 a4adaaec 34d19bb3 .c).6&8.3.<.0>...0..4.5.....4...
0000100 2c793183 325c3990 a4e9a678 303a35e4 2ebb3067 3590346e 31613724 31b6a817 ,y1.2\9....x0:5...0g5.4n1a7$1...
0000120 39b68800 a83b31d0 30e4353d 350d3892 33e32d22 2b8ea5e9 b7f1334e 353834e4 9....;1.0.5=5.8.3.-"+.....3N584.
0000140 351a37f3 38a63930 38d23884 38c43c3c 41bc36fa 3dd838fb 3932397e 3b283bde 5.7.8.908.8.8.<<A.6.=.8.929~;(;.
0000160 3ae03b94 3c113c28 3c47aedb 3b1c3d17 39283c51 414039ad 3ae13930 39013b5a :.;.<.<(<G..;.=.9(<QA@9.:.909.;Z
0000180 39db3a33 43dca99b ac919fd9 3fb5a204 311899c6 a7e332ac 3882a703 9d569c63 9.:3C.......?...1.....2.8....V.c
第一列0000000、0000020、0000040是后面数据的地址。我想在这个地址上添加某个数字,例如 0x258d5580 并显示它,使它看起来像这样:
258d5580 4130b00f adfbad7e ad96adbc ada0ad6e ad91adf4 ae2eae9e 3b64b1bc ab89a4b0 A0.....~.......n........;d......
258d55a0 a3c0a865 a18ba57e a721a531 a608a64e a807aaf9 ae6ba418 ac2938c2 ad23abb6 ...e...~.!.1...N.....k...)8..#..
258d55c0 2cd6a1d9 3f583428 a4e1a659 a2eca7e1 4116aa10 2d5433ff 29483114 30153ac8 ,...?X4(...Y....A...-T3.)H1.0.:.
258d55e0 37ab3cfd a9fca910 adb13542 9dec8b99 3d752fde 340230c3 2eeb33bd 33d83a5a 7.<.......5B....=u/.4.0...3.3.:Z
258d5600 38aab0b1 349ca9cf b0603e00 3b2839ea a6082f4d 2c7c9df9 3d4630aa a90f3936 8...4....`>.;(9.../M,|..=F0...96
258d5620 a6081fb0 b0a13c1c a2cc39d2 b17caa7c a5f62ada 3321a9bd a1a9aefe 36099f1c ......<...9..|.|..*.3!......6...
258d5640 3b10a326 3806ae88 acde9fdc a3a630a0 3d562e82 a4a12e85 390e35aa a5902078 ;..&8.........0.=V......9.5... x
258d5660 ac6329d6 36263802 33983c16 303ea8f8 a5302eb3 34ee35e8 a4adaaec 34d19bb3 .c).6&8.3.<.0>...0..4.5.....4...
258d5680 2c793183 325c3990 a4e9a678 303a35e4 2ebb3067 3590346e 31613724 31b6a817 ,y1.2\9....x0:5...0g5.4n1a7$1...
258d56a0 39b68800 a83b31d0 30e4353d 350d3892 33e32d22 2b8ea5e9 b7f1334e 353834e4 9....;1.0.5=5.8.3.-"+.....3N584.
258d56c0 351a37f3 38a63930 38d23884 38c43c3c 41bc36fa 3dd838fb 3932397e 3b283bde 5.7.8.908.8.8.<<A.6.=.8.929~;(;.
258d56e0 3ae03b94 3c113c28 3c47aedb 3b1c3d17 39283c51 414039ad 3ae13930 39013b5a :.;.<.<(<G..;.=.9(<QA@9.:.909.;Z
258d5700 39db3a33 43dca99b ac919fd9 3fb5a204 311899c6 a7e332ac 3882a703 9d569c63 9.:3C.......?...1.....2.8....V.c
258d5720 aa2bb218 a4cd34b9 ad02a5ad 38d64336 34d4b025 390a3939 3628ad3e b03a3f9f .+....4.....8.C64..%9.996(.>.:?.
258d5740 3ad73724 2f0336a6 b244ad12 a9f6af7c aa70ace3 ab8eabf8 ae693be2 af41af41 :.7$/.6..D.....|.p.......i;..A.A
如何使用 awk 做到这一点? 我的 awk 版本:
ckim@stph45:/home/ckim] awk --version
GNU Awk 3.1.7
Copyright (C) 1989, 1991-2009 Free Software Foundation.
添加(为我解决):这有效(在下面的三人组的帮助下) tt.awk:
{ $1 = sprintf("%08x", $1 + 0x258d5580) } 1
然后做
awk -f tt.awk --non-decimal-data file
它有效。
258d5580 4130b00f adfbad7e ad96adbc ada0ad6e ad91adf4 ae2eae9e 3b64b1bc ab89a4b0 A0.....~.......n........;d......
258d55a0 a3c0a865 a18ba57e a721a531 a608a64e a807aaf9 ae6ba418 ac2938c2 ad23abb6 ...e...~.!.1...N.....k...)8..#..
258d55c0 2cd6a1d9 3f583428 a4e1a659 a2eca7e1 4116aa10 2d5433ff 29483114 30153ac8 ,...?X4(...Y....A...-T3.)H1.0.:.
258d55e0 37ab3cfd a9fca910 adb13542 9dec8b99 3d752fde 340230c3 2eeb33bd 33d83a5a 7.<.......5B....=u/.4.0...3.3.:Z
258d5600 38aab0b1 349ca9cf b0603e00 3b2839ea a6082f4d 2c7c9df9 3d4630aa a90f3936 8...4....`>.;(9.../M,|..=F0...96
258d5620 a6081fb0 b0a13c1c a2cc39d2 b17caa7c a5f62ada 3321a9bd a1a9aefe 36099f1c ......<...9..|.|..*.3!......6...
258d5640 3b10a326 3806ae88 acde9fdc a3a630a0 3d562e82 a4a12e85 390e35aa a5902078 ;..&8.........0.=V......9.5... x
258d5660 ac6329d6 36263802 33983c16 303ea8f8 a5302eb3 34ee35e8 a4adaaec 34d19bb3 .c).6&8.3.<.0>...0..4.5.....4...
258d5680 2c793183 325c3990 a4e9a678 303a35e4 2ebb3067 3590346e 31613724 31b6a817 ,y1.2\9....x0:5...0g5.4n1a7$1...
258d56a0 39b68800 a83b31d0 30e4353d 350d3892 33e32d22 2b8ea5e9 b7f1334e 353834e4 9....;1.0.5=5.8.3.-"+.....3N584.
258d56c0 351a37f3 38a63930 38d23884 38c43c3c 41bc36fa 3dd838fb 3932397e 3b283bde 5.7.8.908.8.8.<<A.6.=.8.929~;(;.
258d56e0 3ae03b94 3c113c28 3c47aedb 3b1c3d17 39283c51 414039ad 3ae13930 39013b5a :.;.<.<(<G..;.=.9(<QA@9.:.909.;Z
258d5700 39db3a33 43dca99b ac919fd9 3fb5a204 311899c6 a7e332ac 3882a703 9d569c63 9.:3C.......?...1.....2.8....V.c
258d5720 aa2bb218 a4cd34b9 ad02a5ad 38d64336 34d4b025 390a3939 3628ad3e b03a3f9f .+....4.....8.C64..%9.996(.>.:?.
【问题讨论】:
-
od 和 awk 结合起来可能是一种更简单的方法,我稍后会在我可以在笔记本电脑上打字时解释
-
这个问题是重复的,但不是直接的:OP可以通过以下方式使用重复来解决他的问题:
awk '{v=("0x"$1); v=strtonum(v)+0x258d5580; $1=sprintf("%0.8x",v)}1' file
标签: awk