任何人都知道一個標準的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