如果输入不为空,则管道减少

时间:2014-03-04 02:46:08

标签: bash gawk

在之前的一个问题(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;处理这个?如何处理只是空行的输入?

1 个答案:

答案 0 :(得分:3)

使用-F选项less

gawk -v RS="${recordSetDelimiter}" "BEGIN{IGNORECASE=$ignoreCase} /${searchTerm}/{print FILENAME ORS \$0 ORS \"<<\"}" "${directory}"/*.idx |
    less -F -I -p "${searchTermLess}"

如果输出适合一个屏幕,这会立即退出,如果没有输出,这很简单。