在之前的一个问题(Use awk to output section of file forward and back from target regex)中,我开发了以下语句,将gawk的输出管道输入为更少。
gawk -v RS="${recordSetDelimiter}" "BEGIN{IGNORECASE=$ignoreCase} /${searchTerm}/{print FILENAME ORS \$0 ORS \"<<\"}" "${directory}"/*.idx | less -I -p "${searchTermLess}"
但是,如果输入为空,我希望能够避免更少。我考虑过变量或临时文本文件,我想这可行,但输入可能很大,我不确定这会如何影响处理。 (因为我喜欢这个命令的速度有多快。)
是否有最佳方式&#34;处理这个?如何处理只是空行的输入?
答案 0 :(得分:3)
使用-F
选项less
。
gawk -v RS="${recordSetDelimiter}" "BEGIN{IGNORECASE=$ignoreCase} /${searchTerm}/{print FILENAME ORS \$0 ORS \"<<\"}" "${directory}"/*.idx |
less -F -I -p "${searchTermLess}"
如果输出适合一个屏幕,这会立即退出,如果没有输出,这很简单。