我有这样一个文件:
This is a sentence.
This is another sentence.
Run Code Online (Sandbox Code Playgroud)
我需要在每个字符后面添加一个新行,这样每行只出现一个字符,例如:
T
h
i
s
i
s
a
s
e
n
t
e
n
c
e
.
T
h
i
s
i
s
a
n
o
t
h
e
r
s
e
n
t
e
n
c
e
.
Run Code Online (Sandbox Code Playgroud)
如何将每个字符删除到新行?
Pau*_*aul 21
使用sed将每个字符替换为自身后跟换行符:
sed 's/./\0\n/g' -i filename
Run Code Online (Sandbox Code Playgroud)
Lri*_*Lri 12
sed $'s/./&\\\n/g' (与BSD sed)
sed 's/./&\n/g'使用GNU sedfold -w1
-w 以字符数指定宽度while IFS= read -r -n1 -d '' c; do printf %s\\n "$c"; done
-d ''readPOSIX指定的唯一选项是-rgawk -F '' 'OFS="\n"{$1=$1}1'
awk 'BEGIN{FS="";OFS="\n"}{$1=$1}1'在nawk中(BSD awk,OS X附带的awk); 但它不适用于多字节字符当LC_CTYPE设置为UTF-8语言环境时,除了nawk命令之外的所有命令都在我的环境中使用非ASCII字符.没有折叠或剥离空格.
grep在示例中使用:
$ grep -o . file
$ echo This is a sentence. | grep -o .
Run Code Online (Sandbox Code Playgroud)
或者fold:
$ fold -w1 file
$ echo This is a sentence. | fold -w1
Run Code Online (Sandbox Code Playgroud)
使用awk的输入和输出字段分隔符:
awk -F '' -v 'OFS=\n' '{$1=$1}1' filename
Run Code Online (Sandbox Code Playgroud)
或者Perl
perl -F// -lane 'print join "\n", @F' filename
Run Code Online (Sandbox Code Playgroud)