我有两个文件,
file.1
$ cat file.1
this is the stuff that needs to be copied.
and file.2
$ cat file.2
aaaa
aaaa
aaaa
aaaa
bbbb
bbbb
bbbb
bbbb
cccc
cccc
cccc
cccc
dddd
dddd
dddd
dddd
我希望在bbbb的最后一次匹配之后将的内容复制到file.2。
所以这将是:
cat file.1 >> file.2
但是只附加到文件的末尾,所以也许
cat file.1 >> file.2 | grep bbbb
但这并不像我想的那样有效。
结果应该是:
$ cat file.2
aaaa
aaaa
aaaa
aaaa
bbbb
bbbb
bbbb
bbbb
这是需要复制的东西。
cccc
cccc
cccc
cccc
dddd
dddd
dddd
dddd
答案 0 :(得分:0)
您有一些未定义的案例。如果您有以下文件,会发生什么?
aaaa
aaaa
bbbb
bbbb
cccc
cccc
bbbb
bbbb
您想在最后 bbbb
之后只阅读一次吗?或者您希望在每次从bbbb
转换为非{I}之后立即阅读它bbbb
(在这种情况下," cccc"或EOF)?如果您只想要最后 bbbb
,那么您可以为ed
创建编辑shell脚本:
#!/bin/sh
ed "$1" <<EOF
1
?bbbb?r file.2
w
q
EOF
然后使其可执行
chmod ugo+x my_script.sh
然后你可以在你想要的文件上调用它:
find . -type f -name '*.txt' -exec ./my_script.sh {} \;
请注意,文件规范(*.txt
)应不捕获sh
/ ed
脚本,也不应捕获模板({{1 }})。
如果您希望了解file.2
- 非 - bbbb
转换,即使它在文件中多次发生,您也需要澄清这一点。