Linux/UNIX系统下将字符串每个字符单独换行显示的命令是什么?
Linux/UNIX 字符串逐字符换行输出方法
以下所有方法均以输入字符串abc123为例,可直接得到逐字符换行的输出效果。
最简便方案:使用fold命令
fold是专门用于文本折行的工具,指定每行宽度为1即可实现需求:
echo -n "abc123" | fold -w1
参数说明:
-w1指定每行宽度为1个字符echo -n避免额外输出末尾的换行符,防止最终结果多一个空行
其他常用可选方案
- 方案1:使用
grep匹配单个字符
原理:echo -n "abc123" | grep -o .-o参数仅输出匹配到的内容,.匹配任意单个字符,每个匹配结果单独占一行。 - 方案2:使用
sed全局替换
原理:将每个匹配到的单个字符替换为「字符本身+换行符」,全局生效(注:BSD 版本的 sed 需将命令中的echo -n "abc123" | sed 's/./&\n/g'\n替换为实际换行符并转义)。 - 方案3:使用
awk遍历输出
原理:遍历字符串的每个下标,逐个截取字符打印。echo "abc123" | awk '{for(i=1;i<=length($0);i++) print substr($0,i,1)}'
如果是要处理变量中的字符串,可直接用Here String简化写法,比如变量
str="abc123",用fold命令的写法可简化为fold -w1 <<< "$str"
内容的提问来源于stack exchange,提问作者Ashwani Kumar
相关产品推荐
相关产品推荐

