Bash格式十六进制字符串

Bash格式十六进制字符串,bash,shell,string,formatting,Bash,Shell,String,Formatting,任何人都知道使用标准unix命令格式化正在运行的SHA1十六进制字符串,如下所示: 344F9DA1EA1859437077CCA38923C67797BDB8F6 为此: 344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6 比如: 这里有一个带有sed的选项: echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | sed -E 's/.{8}/& /g' (将8个字符的任意序列加上一个空格)怎么样

任何人都知道使用标准unix命令格式化正在运行的SHA1十六进制字符串,如下所示:

344F9DA1EA1859437077CCA38923C67797BDB8F6
为此:

344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
比如:


这里有一个带有
sed
的选项:

echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | sed -E 's/.{8}/& /g'
(将8个字符的任意序列加上一个空格)怎么样

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)    )
    }
 '

我希望这有帮助。

要在每八个字符后添加空格,请尝试:

如果内容位于名为
FILENAME
的文件中的一行上:

sed 's/.\{8\}/& /g' FILENAME 
sed ':a;$!{N;s/\n//;ba;};s/.\{8\}/& /g' FILENAME
或者,如果它们被分成多行。同样,对于名为
FILENAME
的文件:

sed 's/.\{8\}/& /g' FILENAME 
sed ':a;$!{N;s/\n//;ba;};s/.\{8\}/& /g' FILENAME
为了说明区别:

ezra@ubuntu:~$ cat test.file
344F9DA1EA1859437077CCA38923C67797BDB8F6
344F9DA1EA1859437077

ezra@ubuntu:~$ sed ':a;$!{N;s/\n//;ba;};s/.\{8\}/& /g' test.file
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6 344F9DA1 EA185943 7077

ezra@ubuntu:~$ 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
另一个:

echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | fold -b8 | tr "\n" " "
使用纯Bash(3.2版或更高版本):


美好的但是我忘了提到我在OSX上,而且SED似乎没有
-r
标志。有什么提示吗?你可能不需要-r,但需要一个指向Martin的较短命令!将其更改为
sed-E's/[0-9A-F]{8}/&/g'
,它似乎可以在OSX和我的Linux上运行box@Hugo:只需为不起作用的内容添加大量反斜杠。另外,&是指整场比赛的传统方式。也许类似于
s/[0-9A-F]\{8\}/&g
?这里没有OSX。-r是非标准的。对于可移植性,您可以这样做:sed-e's/\(.8\\\\)/\1/g'不知道OSX的awk,但在GNU awk中:
echo“344F9DA1EA1859437077CCA38923C677797BDB8F6”| awk--posix'{gsub([0-9A-F]){8},“&“;print}”
“良好-并且没有尾随空间…另外:
eval echo\${FOO:{0:8}>