sed:跳转到下一个输入文件

sed:跳转到下一个输入文件

是否有类似于grep's-m1awk's nextfilefor 的选项或命令sed,允许sed在找到匹配项时立即停止处理当前输入文件(同时继续处理后续输入文件)?

例如:

find . -type f -exec sed -ns '/pattern/{<do stuff>; p; <next>}' {} +

其中将<next>是停止读取当前输入文件的命令。 quit 命令 ( q) 不合适,因为它只会导致sed退出(放弃后续输入文件),因此每批输入文件最多会找到一个匹配项。

答案1

示例机智搜索和替换:

GNU sed

第一次出现模式后停止处理文件/输入(感谢sed's-s选项和find's )。+

find . -type f -exec sed -ns '0,/pattern/s/patter/replacement/p' "{}" +

BSD sed

BSDsed似乎缺乏-s选择。所以我正在使用桑迪普的建议。

sed第一次出现模式后退出,find并将执行sed下一个文件。

find . -type f -exec sed -n '0,/pattern/p;s/pattern/replacement/p;q' "{}" \;

相关内容