猫标头并使用尴尬重命名列标题



我有一个输入文件(input.txt)这样:

name value1 value2
A 3 1
B 7 4
C 2 9
E 5 2

和另一个具有名称列表(名称.txt)的文件:

B
C

使用grep -f,我可以用名称" b"one_answers" c"

获得所有行

grep -wff names.txt input.txt

获得

B 7 4
C 2 9

但是,我想将标头保持在输出文件的顶部,并将列名称为" id"名称。并使用grep,以保持名称b和c的行,输出应为:

**ID** value1 value2
B 7 4
C 2 9

我认为尴尬应该能够实现这一目标,但是成为尴尬的新手,我不确定如何处理。帮助感谢!

虽然可以在awk中执行此操作,但解决您实际问题的最快方法就是简单地准备您想要的标头,然后在GREP输出前面。

echo **ID** value1 value2 > Output.txt && grep -wFf names.txt input.txt >> Output.txt

update 由于OP具有多个文件,因此我们可以修改上线以将第一行从输入文件中拉出。

head -n 1 input.txt | sed 's/name/ID/' > Output.txt && grep -wFf names.txt input.txt >> Output.txt

这是如何使用awk

进行操作。
awk 'FNR==NR {a[$1];next} FNR==1 {$1="ID";print} {for (i in a) if ($1==i) print}' name input
ID value1 value2
B 7 4
C 2 9

names存储在数组a
然后测试提交的 #1,如果它在数组中包含数据a

相关内容

  • 没有找到相关文章

最新更新