2017-05-04 61 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" 
相關問題