所以我在某个文件中寻找一些东西:
grep "import" test.txt | tail -1
在 test.txt 中有
import-one
import-two
import-three
some other stuff in the file
这将返回最后的搜索结果:
import-three
现在我如何在“文件中的一些其他内容”之前添加一些文本 - 之后 - 导入三。基本上我想追加一行,但不是在文件末尾,而是在搜索结果之后。
我了解您在每个搜索结果之后都需要一些文本,这意味着在每个匹配行之后。所以试试
grep "import" test.txt | sed '/$/ a\Line 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
使用ed
:
ed test.txt <<END
$
?^import
a
inserted text
.
w
q
END
含义:转到文件末尾,向后搜索以 import 开头的第一行,在下面添加新行(插入以“.”行结尾),保存并退出
假设您无法区分不同的“导入”句子的一种方法。它用 反转文件tac
,然后用 找到第一个匹配项(导入三)sed
,在它之前插入一行(i\
)并再次反转文件。
这:a ; n ; ba
是一个循环以避免再次处理/import/
匹配。
该命令是通过几行编写的,因为sed
插入命令的语法非常特殊:
$ 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