如何在搜索结果后添加一行?

所以我在某些文件中grep了一些东西:

grep "import" test.txt | tail -1 

在test.txt中有

import-one
import-two
import-three

some other stuff in the file

这将返回最后的搜索结果:

import-three

现在我该如何添加一些text -after-import-three,但在“文件中的其他内容”之前。 基本上我想附加一行,但不是在文件的末尾,而是在搜索结果之后。


我知道每个搜索结果后都需要一些文本,这意味着在每个匹配行之后。 所以试试

grep "import" test.txt | sed '/$/ aLine to be added'

你可以用sed来尝试这样的事情

sed '/import-three/ a
> Line to be added' t

测试:

$ sed '/import-three/ a
> Line to be added' t
import-one
import-two
import-three
Line to be added

some other stuff in the file

假设你不能在不同的“输入”句子之间切分的一种方法。 它用tac翻转文件,然后用sed找到第一个匹配(import-three),在它之前插入一行( i )并再次反转文件。

The :a ; n ; ba :a ; n ; ba :a ; n ; ba是避免再次处理/import/ match的循环。

该命令通过多行写入,因为sed insert命令对于语法非常特殊:

$ tac infile | sed '/import/ { i
"some text"
:a
n
ba }
' | tac -

它产生:

import-one
import-two
import-three
"some text"

some other stuff in the file
链接地址: http://www.djcxy.com/p/19641.html

上一篇: How to append a line after a search result?

下一篇: Regular expression to match error and associated few lines