2017-05-04 155 views
1

假设我有以下字符串:如何在shell脚本中的每个字符之后插入新行?

abcdefghi 

哪条命令,我可以使用,这样的结果是:

a 
b 
c 
d 
e 
f 
g 
h 
i 

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

+3

[配售的每个字符在新行]的可能的复制(http://stackoverflow.com/questions/9899049/配售,每一个字符上,一个新行) – iamauser

回答

4

有一个叫fold工具插入换行符,你可以告诉它做每一个字符后面添加一个:

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

<<<用来表示一个here string。如果你的shell不支持,你可以管fold代替:

echo 'abcdefghi' | fold -w 1 
0

您可以使用sed,尽管它的最后一个字母后添加一个额外的换行符等你拿在最后一个空白行:

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

$ 

S// /是sed的“替代”命令。在旧的侧,模式.完全匹配任何字符。在新的一侧,符号&的意思是“无论旧的模式匹配” - 我们包括我们在替换中匹配的东西,所以我们添加东西而不是删除它们。

我们想用换行符跟随每个匹配的字符,但是换行符会终止sed命令并导致语法错误,除非我们在它前面放置反斜线。

所以我们用同样的字符(&)替换任何字符(.),后面跟着一个换行符(\ +换行符)。末尾的g意味着替换每一行,而不是每行中的第一行。

该演示使用了一个here-string,这是现代贝壳的一部分,但不是全部;你也可以用echo abcdefghi | sed '...'来做。

0
grep -o . <<< "abcdefghi" 
相关问题