假设我有以下字符串:
abcdefghi
我应该使用哪个命令才能得到以下结果:
a
b
c
d
e
f
g
h
i
我刚开始学编程,希望有人能帮助我。
grep -o . <<< "abcdefghi"
sed
,尽管它会在最后一个字母后添加一个额外的换行符,这样你就会在末尾得到一个空行:$ sed 's/./&\
/g' <<<abcdefghi
a
b
c
d
e
f
g
h
i
$
s/old/new/ 是 sed 命令中的“替换”操作。 在 old 部分,模式.
匹配任何字符。 在 new 部分,符号&
表示“与old模式匹配的内容” - 我们在替换中包含所匹配的内容,因此我们正在添加事物,而不是删除它们。
我们想要在每个匹配的字符后面加上一个换行符,但换行符将终止sed
命令,并导致语法错误,除非我们在其前面加上反斜杠。
因此,我们用相同的字符(&
)跟随这些字符(.
),然后是换行符(\
+换行符)来替换任何字符(.
)。结尾的g
表示替换每个出现的位置,而不仅仅是每行的第一个。
演示使用了 here-string,在大多数现代shell中都是一部分,但不是全部;您也可以使用echo abcdefghi | sed '...'
来实现。