[英]Bash Format HEX string
任何人都知道標准的unix命令來格式化正在運行的SHA1十六進制字符串,如下所示
344F9DA1EA1859437077CCA38923C67797BDB8F6
進入這個:
344F9DA1 EA185943 7077CCA3 8923C677 97BDB8F6
喜歡:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | awk ...
這是sed
的一個選項:
echo "344F9DA1EA1859437077CCA38923C67797BDB8F6" | sed -E 's/.{8}/& /g'
(替換任何8個字符的序列本身加一個空格)
要在每八個字符后添加一個空格,請嘗試:
如果內容位於名為FILENAME
的文件中的單行上:
sed 's/.\{8\}/& /g' FILENAME
或者,如果它們分成多行。 同樣,對於名為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" " "
怎么樣
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) )
}
'
我希望這有幫助。
使用純Bash(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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.