我有一个命令会在用户定义的字符串之间输出文本,但我似乎无法输出文本来自的文件名...
有没有办法调整当前命令来执行此操作?
find . -type f -print0 | xargs -0 sed -n '/'$1'/,/'$2'/p' $3
命令语法:
./shell.sh Start End *.xml
理想的输出类似于:
文件名
$ 1到$ 2之间的文字
下一个文件名
$ 1到$ 2之间的文字
依旧......
答案 0 :(得分:0)
我猜你想要像
这样的东西find . -name "$3" -type f -exec sed -n "/$1/,/$2/s%^%{}%p" {} \;
这可以适用于使用xargs
,但由于您希望每个文件都使用sed
命令中的文件名,因此无论如何都要使用find -exec
运行它。
您$3
的原始地点似乎不正确。我猜你想要什么,但上述希望是有道理的。
所以sed
最终会运行类似
sed -n "/foo/,/bar/s%^%/path/to/file:%p" /path/to/file
通过用文件名和冒号替换^
(行首)来为匹配行添加前缀。