Command-Line
Bash腳本:在每個字母上拆分單詞
如何拆分單詞的字母,每個字母在單獨的行中?
例如,鑑於
"StackOver"
我想看到S t a c k O v e r
我是 bash 新手,所以我不知道從哪裡開始。
我會使用
grep
:$ grep -o . <<<"StackOver" S t a c k O v e r
或
sed
:$ sed 's/./&\n/g' <<<"StackOver" S t a c k O v e r
如果最後的空白是一個問題:
sed 's/\B/&\n/g' <<<"StackOver"
所有這些都假設 GNU/Linux。
如果目的是垂直列印文本,您可能希望打破字素群而不是字元。例如帶有
e
尖銳口音的 a:
- 使用字素群(
e
其尖銳的口音將是一個字素群):$ perl -CLAS -le 'for (@ARGV) {print for /\X/g}' $'Ste\u301phane' S t é p h a n e
(或
grep -Po '\X'
使用 PCRE 支持建構的 GNU grep)
- 使用字元(這裡使用 GNU
grep
):$ printf '%s\n' $'Ste\u301phane' | grep -o . S t e p h a n e
fold
旨在打破字元,但 GNUfold
不支持多字節字元,因此它改為打破字節:$ printf '%s\n' $'Ste\u301phane' | fold -w 1 S t e � � p h a n e
在僅由 ASCII 字元組成的StackOver上(因此每個字元一個字節,每個字素群一個字元),所有三個都會給出相同的結果。