如何在grep中的每个匹配的输出前面加上一些文本?

时间:2019-12-10 02:02:02

标签: bash unix grep

我有一个带有短语列表的文件

apples
banananas
oranges

我正在运行cat file.txt | xargs -I% sh -c "grep -Eio '(an)' >> output.txt"

我想不通的是,我希望输出包含原始行,例如:

bananas,an
oranges,an

如何在grep输出的前面添加前缀,使其也包含通过管道传递给它的值?

3 个答案:

答案 0 :(得分:1)

这应该是awk的任务,请您试一试。

awk '/an/{print $0",an"}'  Input_file

这将在Input_file的所有行中查找字符串an,并在其中附加an

答案 1 :(得分:0)

使用sed的解决方案:

sed '/an/s/$/,an/' intput_file

这会找到与模式/an/匹配的行,并将,an附加到模式空间$的末尾。

答案 2 :(得分:0)

使用awk代替<!DOCTYPE html> <head> <!-- App.js --> <script src="{{ asset('js/app.js') }}" defer></script> <!-- Styles --> <link href="{{ asset('css/app.css') }}" rel="stylesheet"> </head> <body> <div id="app"> @yield('content') </div> <div id="app2"> <!-- Where can I instantiate this?--> (Question 2) </div> </body> @yield('vueScripts') <-- (Question 3) </html>

grep

输出:

$ awk -v s="an" '                          # search string
BEGIN {
    OFS=","                                # separating comma
}
match($0,s) {                              # when there is a match
    print $0,substr($0,RSTART,RLENGTH)     # output
}' file