是否有脚本/程序/实用程序可以以优化的方式满足以下要求?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
答案1
你可以用awk
它。
command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }'
答案2
下面是一个sed
示例:
注意:每次运行脚本时,sed 的w
命令都会覆盖现有文件,但前提是触发特定的写入命令;因此rm
rm -f file-{yes,not}
sed -ne '/pattern/bY; w file-not' -e 'b; :Y; w file-yes' file
答案3
您可以在 awk 中附加文件:
awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; }
或更短:
awk '{print >>(/pattern/?"matched":"unmatched")}'