Pet*_*r.O 7 text command-line search software-recommendation
更新(见问题结尾)
我见过的文本“搜索和替换”实用程序似乎只能逐行搜索......
是否有命令行工具可以定位一行行(在文本文件中),并将其替换为另一行行。?
例如:测试文件文件是否包含以下几exact group行:
'Twas brillig, and the slithy toves
Did gyre and gimble in the wabe:
All mimsy were the borogoves,
And the mome raths outgrabe.
'Beware the Jabberwock, my son!
The jaws that bite, the claws that catch!
Beware the Jubjub bird, and shun
The frumious Bandersnatch!'
Run Code Online (Sandbox Code Playgroud)
我想要这个,这样我就可以替换文件中的多行文本,并且知道我不会覆盖错误的行。
我永远不会取代“The Jabberwocky”(刘易斯卡罗尔),但它是一个新颖的例子:)
UPDATE:
..(子更新)以下有关原因我的意见时,不能用sed是只有在的情况下; 不要将任何工具推得太远超出其设计意图(我经常使用 sed,并认为它是无价的。)
我刚刚发现了一个关于sed以及何时不使用它的有趣网页。
因此,由于所有sed答案,我将发布链接..它是sourceforge 上 sed 常见问题解答的一部分
另外,我很确定有某种方法diff可以完成定位文本块的工作(一旦找到,替换就非常简单;使用head和tail)......'diff' 转储所有必要的数据,但我还没有弄清楚如何过滤它,......(我还在努力)
这个简单的 python 脚本应该可以完成任务:
#!/usr/bin/env python
# Syntax: multiline-replace.py input.txt search.txt replacement.txt
import sys
inp = open(sys.argv[1]).read()
needle = open(sys.argv[2]).read()
replacement = open(sys.argv[3]).read()
sys.stdout.write(inp.replace(needle,replacement))
Run Code Online (Sandbox Code Playgroud)
像大多数其他解决方案一样,它的缺点是整个文件会立即进入内存。但是,对于小文本文件,它应该可以很好地工作。
| 归档时间: |
|
| 查看次数: |
2337 次 |
| 最近记录: |