在每个字母之间添加空格

Vil*_*age 16 bash openoffice.org

如何在UTF-8文档中的每个字符或符号之间添加空格?我123hello!变成了1 2 3 h e l l o !.

  • 我有BASH,OpenOffice.orggedit,如果其中任何一个可以做到这一点.
  • 我不在乎它是否有时会在一些地方留下额外的空间(例如,在一个地方有2或3个空格没问题).

Sie*_*geX 21

最短的sed版本

sed 's/./& /g'
Run Code Online (Sandbox Code Playgroud)

产量

$ echo '123hello!' |  sed 's/./& /g'
1 2 3 h e l l o !
Run Code Online (Sandbox Code Playgroud)

强制awk

awk '$1=$1' FS= OFS=" "
Run Code Online (Sandbox Code Playgroud)

产量

$ echo '123hello!' |  awk '$1=$1' FS= OFS=" "
1 2 3 h e l l o !
Run Code Online (Sandbox Code Playgroud)


sar*_*old 17

sed(1) 可以做到这一点:

$ sed -e 's/\(.\)/\1 /g' < /etc/passwd
r o o t : x : 0 : 0 : r o o t : / r o o t : / b i n / b a s h 
d a e m o n : x : 1 : 1 : d a e m o n : / u s r / s b i n : / b i n / s h 
Run Code Online (Sandbox Code Playgroud)

它适用于例如UTF-8编码的日语内容:

$ file japanese 
japanese: UTF-8 Unicode text
$ sed -e 's/\(.\)/\1 /g' < japanese 
E X I F ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
$ 
Run Code Online (Sandbox Code Playgroud)

  • 这不是更简单的`sed 's/./&amp; /g' infile`吗? (3认同)

Mar*_*rin 7

既然你有bash,我会假设你有权访问sed.以下命令行将执行您所希望的操作.

$ sed -e 's:\(.\):\1 :g' < input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)


小智 5

sed 没问题,但这是纯粹的 bash

string=hello
for ((i=0; i<${#string}; i++)); do
    string_new+="${string:$i:1} "
done
Run Code Online (Sandbox Code Playgroud)