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

Linux 在grep内容之后添加一个额外的列,linux,bash,grep,Linux,Bash,Grep,我知道grep可以逐行从文件中提取特定内容。 只是想知道如何在每行之前或之后添加另一列作为索引。 例如: grep "aaa" text.txt > tmp.txt 在tmp.txt文件中,我们可以看到如下内容: aaawekjre qejrteraaa wrgeaaaere 但是,我想添加一个特定的索引作为额外的列。 因此,tmp.txt可能如下所示: John aaawekjre John qejrteraaa John wrgeaaaere 您可以使用awk: awk '/a

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

grep "aaa"  text.txt > tmp.txt
在tmp.txt文件中,我们可以看到如下内容:

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

John aaawekjre
John qejrteraaa
John wrgeaaaere
您可以使用awk:

awk '/aaa/{print "John", $0}' text.txt > tmp.txt
工作原理
  • -n

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

  • /aaa/s/^/John/p

    这将选择包含
    aaa
    的行。对于这些行,我们进行替换(
    s/^/John/
    )以将
    John
    放在行首,然后打印行(
    p

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

试试这个

   grep "aaa"  text.txt | awk '{print "John " $0}' > tmp.txt

格雷普·奥克似乎有点多余。你可以像anubhava那样做
awk'/pattern/{print…}'
。我同意u,anubhava和john1024解决方案比这更好;
   grep "aaa"  text.txt | awk '{print "John " $0}' > tmp.txt