如何在shell脚本中的每个字符后面插入一个新行?

时间:2017-05-04 21:16:47

标签: linux shell unix newline

假设我有以下字符串:

abcdefghi

我可以使用哪个命令,结果是:

a
b
c
d
e
f
g
h
i

我刚刚开始编码,所以我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:4)

有一个名为fold的工具可以插入换行符,你可以告诉它在每个字符后添加一个:

$ fold -w 1 <<< 'abcdefghi'
a
b
c
d
e
f
g
h
i

<<<用于表示here string。如果你的shell不支持,你可以转而使用fold

echo 'abcdefghi' | fold -w 1

答案 1 :(得分:0)

您可以使用sed,虽然它会在最后一个字母后添加一个额外的换行符,但最后会得到一个空行:

$ sed 's/./&\
/g' <<<abcdefghi
a
b
c
d
e
f
g
h
i

$

s / old / new /是sed&#34;替代&#34;命令。在方面,模式.完全匹配任何字符。在 new 一侧,符号&表示&#34;无论模式匹配&#34; - 我们在替换中包含了我们匹配的内容,因此我们正在添加内容,而不是删除它们。

我们希望使用换行符跟踪每个匹配的字符,但是换行符将终止sed命令并导致语法错误,除非我们在其前面添加反斜杠。

所以我们用相同的字符(.)替换任何字符(&)后跟换行符(\ +换行符)。最后的g意味着替换每一个事件,而不仅仅是每一行的第一个事件。

演示使用here-string,它是大多数现代贝壳的一部分,但不是全部;您也可以使用echo abcdefghi | sed '...'

答案 2 :(得分:0)

grep -o . <<< "abcdefghi"