1. ホーム
  2. bash

[解決済み] Bashで文字列の各文字に対してforループを実行するには?

2023-02-07 23:07:59

質問

このような変数があります。

words="这是一条狗。"

文字を1つずつforループにしたい、例えば最初の character="这" というように、1文字ずつforループさせ、次に character="是" , character="一" など。

私が知っている唯一の方法は、各文字をファイルの別々の行に出力して、それから while read line を使うことですが、これは非常に非効率的なようです。

  • 文字列の各文字を for ループで処理するにはどうすればよいですか。

どのように解決するのですか?

とは seddash のシェル LANG=en_US.UTF-8 で、以下のように正しく動作するようになりました。

$ echo "你好嗎 新年好。全型句號" | sed -e 's/\(.\)/\1\n/g'
你
好
嗎

新
年
好
。
全
型
句
號

$ echo "Hello world" | sed -e 's/\(.\)/\1\n/g'
H
e
l
l
o

w
o
r
l
d

このように、出力をループさせるには while read ... ; do ... ; done

は、サンプルテキストを英語に翻訳するために編集されました。

"你好嗎 新年好。全型句號" is zh_TW.UTF-8 encoding for:
"你好嗎"     = How are you[ doing]
" "         = a normal space character
"新年好"     = Happy new year
"。全型空格" = a double-byte-sized full-stop followed by text description