如何用单行Shell命令将文本按单词垂直逐行显示?
实现单词逐行显示的单行Shell命令
这里提供几种简单有效的实现方式:
1. 使用tr命令(最简洁)
cat file1.txt | tr -s '[:space:]' '\n'
tr -s会将连续的空白字符(包括空格、换行、制表符)压缩为单个,再替换成换行符,自动过滤掉空行,完美匹配你的需求。
2. 使用awk命令(逻辑清晰)
awk '{for(i=1;i<=NF;i++) print $i}' file1.txt
awk默认以空白作为字段分隔符,NF代表当前行的字段总数,循环遍历每一行的每个字段并打印,天然忽略空行和多余空白。
3. 修正你的Perl命令
你之前的Perl命令逻辑不符合需求,正确写法可以是:
perl -pe 's/\s+/\n/g' file1.txt | grep -v '^$'
先用Perl把所有连续空白替换成换行,再用grep过滤掉空行;也可以直接用Perl完成所有处理:
perl -ne 'print join "\n", split /\s+/, $_' file1.txt
通过split按空白分割每行内容,再用换行符连接后打印。
内容的提问来源于stack exchange,提问作者Oh God
相关产品推荐
相关产品推荐

