任何人都知道一个标准的UNIX命令格式化运行SHA1十六进制字符串是这样的:猛砸格式的十六进制字符串
344F9DA1EA1859437077CCA38923C67797BDB8F6
成这样:
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
像:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | awk ...
任何人都知道一个标准的UNIX命令格式化运行SHA1十六进制字符串是这样的:猛砸格式的十六进制字符串
344F9DA1EA1859437077CCA38923C67797BDB8F6
成这样:
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
像:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | awk ...
这里的sed
一个选项:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | sed -E 's/.{8}/& /g'
如何
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" \
| awk '{
printf("%s %s %s %s %s\n",
substr($0,1,8), substr($0,9,8), substr($0,17,8), substr($0,25,8),
substr($0,33,8), substr($0,41,8) )
}
'
我希望这有助于(单独加一个空格替换为8个字符的任意序列)。
不知道OSX的awk,但在GNU awk中:'echo“344F9DA1EA1859437077CCA38923C67797BDB8F6”| awk --posix'{gsub(“([0-9A-F]){8}”,“& "); print}''。 – ninjalj 2011-03-14 22:11:01
新增的每个第八个字符后面输入一个空格,请尝试:
如果内容是在一个文件中的一行命名FILENAME
:
sed 's/.\{8\}/& /g' FILENAME
或者,如果他们多行拆分。同样,对于一个文件名为FILENAME
:
sed ':a;$!{N;s/\n//;ba;};s/.\{8\}/& /g' FILENAME
为了说明差异:
[email protected]:~$ cat test.file
344F9DA1EA1859437077CCA38923C67797BDB8F6
344F9DA1EA1859437077
[email protected]:~$ sed ':a;$!{N;s/\n//;ba;};s/.\{8\}/& /g' test.file
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6 344F9DA1 EA185943 7077
[email protected]:~$ sed 's/.\{8\}/& /g' test.file
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
344F9DA1 EA185943 7077
你可以在bash做到这一点没有管道可言。
bash$ FOO="344F9DA1EA1859437077CCA38923C67797BDB8F6"
bash$ echo ${FOO:0:8} ${FOO:8:8} ${FOO:16:8} ${FOO:24:8} ${FOO:32:8}
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
好 - 没有尾随空间......还有:'eval echo \ $ {FOO :{0..4} * 8:8}' – 2015-04-07 19:22:43
另一种:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | fold -b8 | tr "\n" " "
使用纯击(或版本3.2以上):
hex=344F9DA1EA1859437077CCA38923C67797BD
p='(.{8})'; unset patt; for i in {1..5}; do patt+=$p; done
[[ $hex =~ $patt ]]
string=${BASH_REMATCH[@]:1}
echo "$string" # output: 344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
尼斯。但我忘了提及我在OSX上,而SED似乎没有'-r'标志。有小费吗? – 2011-03-14 22:02:47
您可能不需要-r,但指向Martin的更短命令! – shellter 2011-03-14 22:04:59
更改为'sed -E's/[0-9A-F] {8} /&/ g''这似乎可以在OSX和我的Linux机器上运行 – Martin 2011-03-14 22:05:59