2011-03-14 53 views
2

任何人都知道一个标准的UNIX命令格式化运行SHA1十六进制字符串是这样的:猛砸格式的十六进制字符串

344F9DA1EA1859437077CCA38923C67797BDB8F6 

成这样:

344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6 

像:

echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | awk ... 

回答

5

这里的sed一个选项:

echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | sed -E 's/.{8}/& /g' 

+0

尼斯。但我忘了提及我在OSX上,而SED似乎没有'-r'标志。有小费吗? – 2011-03-14 22:02:47

+0

您可能不需要-r,但指向Martin的更短命令! – shellter 2011-03-14 22:04:59

+0

更改为'sed -E's/[0-9A-F] {8} /&/ g''这似乎可以在OSX和我的Linux机器上运行 – Martin 2011-03-14 22:05:59

1

如何

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个字符的任意序列)。

+0

不知道OSX的awk,但在GNU awk中:'echo“344F9DA1EA1859437077CCA38923C67797BDB8F6”| awk --posix'{gsub(“([0-9A-F]){8}”,“& "); print}''。 – ninjalj 2011-03-14 22:11:01

3

新增的每个第八个字符后面输入一个空格,请尝试:

如果内容是在一个文件中的一行命名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 
3

你可以在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 
+0

好 - 没有尾随空间......还有:'eval echo \ $ {FOO :{0..4} * 8:8}' – 2015-04-07 19:22:43

2

另一种:

echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | fold -b8 | tr "\n" " " 
1

使用纯击(或版本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