6
A
回答
7
你可以做的是迭代fr om 0到127,然後將十進制值轉換爲其ASCII值(或返回)。
可以使用these功能來做到這一點:
# POSIX
# chr() - converts decimal value to its ASCII character representation
# ord() - converts ASCII character to its decimal value
chr() {
[ ${1} -lt 256 ] || return 1
printf \\$(printf '%03o' $1)
}
# Another version doing the octal conversion with arithmetic
# faster as it avoids a subshell
chr() {
[ ${1} -lt 256 ] || return 1
printf \\$(($1/64*100+$1%64/8*10+$1%8))
}
# Another version using a temporary variable to avoid subshell.
# This one requires bash 3.1.
chr() {
local tmp
[ ${1} -lt 256 ] || return 1
printf -v tmp '%03o' "$1"
printf \\"$tmp"
}
ord() {
LC_CTYPE=C printf '%d' "'$1"
}
# hex() - converts ASCII character to a hexadecimal value
# unhex() - converts a hexadecimal value to an ASCII character
hex() {
LC_CTYPE=C printf '%x' "'$1"
}
unhex() {
printf \\x"$1"
}
# examples:
chr $(ord A) # -> A
ord $(chr 65) # -> 65
3
這裏是你如何打印帶有awk
整數作爲其對應的ASCII字符:
echo "65" | awk '{ printf("%c", $0); }'
,它將打印:
A
這裏是你如何可以通過大寫字母這樣循環:
# ascii for A starts at 65:
ascii=65
index=1
total=26
while [[ $total -ge $index ]]
do
letter=$(echo "$ascii" | awk '{ printf("%c", $0); }')
echo "The $index'th letter is $letter"
# Increment the index counter as well as the ascii counter
index=$((index+1))
ascii=$((ascii+1))
done
2
嗯......如果你真的希望他們一切,你希望它是什麼腳本一樣,你可以做到這一點,我想:
awk 'function utf32(i) {printf("%c%c%c%c",i%0x100,i/0x100%0x100,i/0x10000%0x100,i/0x1000000) } BEGIN{for(i=0;i<0x110000;i++){utf32(i);utf32(0xa)}}' | iconv --from-code=utf32 --to-code=utf8 | grep -a '[[:print:]]'
但是這個列表非常大,並且不是很有用。 Awk可能不是用於從0到0x110000生成二進制整數的最優雅方式 - 如果找到它,則替換更優雅的東西。
編輯:哦,我看到你只想要ascii。那麼,我會讓這個答案留在這裏,以防其他人真的想要所有的UTF可打印字符。
5
只使用echo
小號八進制轉義序列一種可能性:
for n in {0..7}{0..7}{0..7}; do echo -ne "\\0$n"; done
2
這裏是我想出了一個班輪採取從桑普森臣的一些作品和馬塔的答案:
for n in {0..127}; do awk '{ printf("%c", $0); }' <<< $n; done
或者:
for n in {0..127}; do echo $n; done | awk '{ printf("%c", $0); }'
相關問題
- 1. 循環遍歷Bash中的所有列
- 2. 循環遍歷所有Unicode字符
- 3. 如何遍歷字符串的字符?
- 4. 如何遍歷列中的所有行
- 5. 如何遍歷terraform中的所有aws_instances?
- 6. 將所有非ascii字符更改爲ascii Bash腳本
- 7. 如何遍歷字符串
- 8. 如何遍歷字符串
- 9. 如何使用pair來遍歷所有可能的字符對?
- 10. 如何遍歷C++中的unicode字符?
- 11. Bash,如何遍歷所有目錄和命令「ls」
- 12. 如何遍歷UIImage的所有像素?
- 13. 如何遍歷樹的所有節點?
- 14. C++:字符遍歷所有字符串(我越來越瘋狂)
- 15. 在C++中遍歷所有字符的文件
- 16. 如何遍歷字典python中的所有鍵?
- 17. 如何在所有頁面中遍歷gridview的所有行?
- 18. 如何在VB.net中遍歷/遍歷表單中的所有對象?
- 19. 遍歷[字符串:任何]
- 20. 遍歷(字符* C,...)
- 21. 遍歷字符串
- 22. 如何遍歷所有但可枚舉
- 23. 如何遍歷所有對象屬性
- 24. 如何循環遍歷所有路線?
- 25. 如何遍歷所有Bundle對象
- 26. 如何遍歷所有wx.CheckBox實例?
- 27. 如何所有成員遍歷jobject
- 28. android - 如何遍歷所有活動?
- 29. 如何遍歷所有屬性和alias_attribute?
- 30. 遍歷bash命令
請注意,0-31通常不被認爲是「可打印的」,除了第e空格字符(回車符,換行符,水平和垂直製表符)。 – twalberg