我想从一个文件中插入一系列行,比如210,221r
之前的某些其他文件中的第一次出现模式。
由于我显然不是GNU sed专家,我无法想象如何做到这一点。
我试过
sed '0,/pattern/{210,221r file
}' bunch_of_files
但显然file
从第210行读到EOF。
答案 0 :(得分:1)
试试这个:
sed -r 's/(FIND_ME)/PUT_BEFORE\1/' test.text
-r
enables扩展正则表达式\1
将捕获的文本放入替换文件中。关于你的第二个问题:你可以从像这样的文件中读取替换*:
sed -r 's/(FIND_ME)/`cat REPLACEMENT.TXT`\1/' test.text
如果事先用REPLACEMENT.TXT
替换sed
内的特殊字符,那么你就是黄金。
* =这取决于您的终端仿真器。它适用于bash。
答案 1 :(得分:0)
在https://stackoverflow.com/a/11246712/4328188 CodeGnome给了一些" sed black magic" :
为了在模式之前插入文本,您需要在读入文件之前将模式空间交换到保留空间。例如:
$ sudo gem install cocoapods [...] 1 gem installed $ export PATH=$PATH:/Library/Ruby/bin $ pod --version 0.38.2
但是,要从sed '/pattern/ {
h
r file
g
N
}' in
读取特定的行,可能必须使用类似于虚拟答案的双呼叫解决方案。如果有可能,我会很高兴知道一个通话解决方案。