执行和sed命令

托马斯·波科尼

问题是如何将以下命令合并在一行中并使用exec。

find . -name '*.txt' -exec sh -c 'echo "$(sed -n "\$p" "$1"),$1"' _ {} \;

结果:所有.txt文件的路径和名称。

find . -name '*.txt' -exec sed -n '/stringA/,/stringB/p' {} \;

结果:所有.txt文件的开始和结束参数之间都存在一行。

请求的结果:在开始和结束参数之间给我一行。第一行必须包含.txt文件的路径和名称。

find . -name '*.txt' -exec ???? {} \;

./alpha/file01.txt

1号线

2号线

字符串B

./beta/file02.txt

1号线

2号线

字符串B

谢谢。T.

埃德·莫顿

如果文件不是空的,那么您需要做的是:

find . -name '*.txt' -exec awk 'FNR==1{print FILENAME} /StringA/,/StringB/' {} +

如果它们可以为空,那么最简单的处理方法是对BEGINFILE使用GNU awk:

find . -name '*.txt' -exec awk 'BEGINFILE{print FILENAME} /StringA/,/StringB/' {} +

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章