Linux 在grep内容之后添加一个额外的列
我知道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 "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
工作原理
这告诉sed,除非我们明确要求,否则不要打印任何内容-n
这将选择包含/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