2011-03-14 55 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