如何将csplit输出重定向至分页器而非生成文件?
解决方案
用csplit没法直接实现你要的效果——它的核心设计就是把分割结果写入独立文件,而非输出到标准输出(stdout),所以没法直接管道到分页器。
不过可以用awk替代,轻松实现按--分割内容并输出到分页器的需求,给你两种实用方案:
方案1:所有分割内容在同一个分页器会话里浏览
awk '/^--$/ {next} {print; if (getline <= 0) exit}' test.txt | less
这个命令会跳过所有--行,把剩下的内容连续输出到less里,你可以用less的快捷键(比如f向下翻页、b向上翻页、q退出)自由浏览所有分割后的内容。
方案2:逐个分割段独立分页查看
如果希望看完一段按q退出后自动加载下一段,可以用这个逻辑:
awk '/^--$/ {close("less"); next} {print | "less"}' test.txt
它会在每次遇到--分隔符时关闭当前less进程,把下一段内容传给新的less实例,实现分段查看的效果。
备选:用csplit临时生成文件再串联
如果非要用csplit,可以先让它生成临时文件,再把所有临时文件内容串联到分页器,看完后自动删除临时文件:
csplit -s --suppress-matched test.txt '/--/' '{*}' && cat xx* | less && rm xx*
不过这个方法会生成临时文件,不如awk方案直接高效。
内容的提问来源于stack exchange,提问作者user13343959
相关产品推荐
相关产品推荐

