我正在寻找一个sed
命令来匹配保持空间的内容与模式空间。例如,假设假设的{h}
标记指的是保持空间的内容:
echo "foo: one foo three" | sed -n \
-e 'h; s/^\(.*\):.*$/\1/' \
-e 'x; s/.*: \(.*\)$/\1/' \
-e '/{h}/ p'
第一个-e
将整体echo
放入保持空间,然后将模式空间减少到最初的“foo”。第二个-e
将“foo”交换到保留空间中,并将原始内容减少echo
为尾随的“one foo three”。第三个(假设的)-e
尝试将保持空间“foo”与模式空间“one foo three”进行匹配。当然没有这样的 token {h}
,但如果有,模式空间会匹配,输出将是:
one foo three
是否sed
提供任何方法来做到这一点?
我的目标是在一个大文件 (4MB) 中计算所有此类匹配项。它也可以通过while read
循环来完成,但它需要每行至少启动 3 个子进程,结果证明这非常慢!如果sed
只是不这样做,欢迎提出任何建议。