在grep内容后添加一个额外的列

use*_*848 3 linux bash grep

据我所知,grep可以逐行从文件中提取特定内容.只是想知道如何在每行之前或之后添加另一列作为索引.例如:

grep "aaa"  text.txt > tmp.txt
Run Code Online (Sandbox Code Playgroud)

在tmp.txt文件中,我们可以看到如下内容,

aaawekjre
qejrteraaa
wrgeaaaere
Run Code Online (Sandbox Code Playgroud)

但是,我想添加一个特定的索引作为额外的列.因此,tmp.txt可能如下所示:

John aaawekjre
John qejrteraaa
John wrgeaaaere
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 7

你可以使用awk:

awk '/aaa/{print "John", $0}' text.txt > tmp.txt
Run Code Online (Sandbox Code Playgroud)


Joh*_*024 6

$ sed -n '/aaa/ s/^/John /p' text.txt
John aaawekjre
John qejrteraaa
John wrgeaaaere
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

  • -n

    除非我们明确要求,否则这告诉sed不要打印任何东西.

  • /aaa/ s/^/John /p

    这将选择包含的行aaa.对于那些行,我们做一个substitute(s/^/John /)放在John行的开头,然后打印行(p).

    这样,aaa永远不会打印不包含的行.因此,不需要单独的grep过程.