Вопрос по bash – Как выполнить цикл для каждого символа в строке в Bash?

57

У меня есть переменная, как это:

<code>words="这是一条狗。"
</code>

Я хочу сделать цикл для каждого из символов, по одному, например. первыйcharacter="这", затемcharacter="是", character="一", так далее.

Единственный известный мне способ - вывести каждый символ в отдельную строку в файле, а затем использоватьwhile read line, но это кажется очень неэффективным.

How can I process each character in a string through a for loop?
Стоит упомянуть, что мы видим много вопросов для новичков, где ОП Думает это то, что они хотят сделать. Очень часто возможно лучшее решение, которое не требует индивидуальной обработки каждого символа. Это известно какXY Проблема и правильное решение - объяснить, что вы на самом деле хотите Выполнить в вашем вопросе, а не только как выполнить шаги, которые, по вашему мнению, помогут вам туда добраться. tripleee

Ваш Ответ

1   ответ
37

Сsed наdash оболочка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

Похожие вопросы