在每个匹配行之间插入单词

Gid*_*ong 3 linux shell bash

我想知道如何在 while 循环中检查文件的结尾。我在这里做的是如果有一些词,例如“菠萝”、“苹果”、“洋葱”、“橙色”等,我想使用 grep 命令查找包含特定词的行并发表一些评论“窗户”。例如,如果我使用grep 'a' 'file',那么它会找到“菠萝”、“苹果”和“橙色”。然后,最后我想把它打印成“菠萝,窗户,苹果,窗户,橙子,窗户”,像这样。所以,我想在 while 或 for 循环中设置一些条件。任何帮助将不胜感激。

编辑:示例输入

apple
banana
pineapple
orange
mandu
ricecake
meat
juice
milk
onion
green onion
Run Code Online (Sandbox Code Playgroud)

使用 grep 命令时的预期输出 --> grep 'a' 'file name'

apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window
Run Code Online (Sandbox Code Playgroud)

Joh*_*024 6

使用 awk

window匹配的每一行之后打印a

$ awk '/a/{print; print "window"}' filename
apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

/a/{...}选择匹配正则表达式的行a。对于每一行,执行大括号中的命令。

print 打印包含匹配项的行

print "window"打印window

使用 sed

$ sed -n '/a/{s/$/\nwindow/; p}' filename
apple
window
banana
window
pineapple
window
orange
window
mandu
window
ricecake
window
meat
window
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

-n 告诉 sed 不要打印,除非我们明确地这样做。

/a/{...}选择匹配正则表达式的行a。对于这些行,执行花括号中的命令。

s/$/\nwindow/window在当前行的末尾添加一个换行符。

p 印刷。