我正在尝试使用AWK将一个文件中的列替换为另一个文件中的列。文件以制表符分隔。问题是第二个文件有一个头。因此,行的数量不相同。我不知道如何在一个文件中跳过第一行,但在另一个文件中不跳过。有什么建议吗?
谢谢
举例来说:
在这里,我提供了两个假设的文件(制表符分隔),我希望将file 1第2列的值替换为file 2第3列的值(“NewValue”)
文件1:
| | | |
| --|--|--|
| “ID_1”|“U”|“地点1”|
| “ID_2”|“U”|“地点2”|
file2:
| “识别码”|“姓名”|“新价值”|
| --|--|--|
| “ID_1”|A|“X”|
| “ID_2”|“B”|“Y”|
预期结果:
| | | |
| --|--|--|
| “ID_1”|“X”|“地点1”|
| “ID_2”|“Y”|“地点2”|
我尝试了下面的代码,但它没有工作。
awk 'NR>1 && NR==FNR{a[NR]=$0;next} {$2=a[FNR]}1' file2 file1
2条答案
按热度按时间juzqafwq1#
假设你想根据每个文件中的行的顺序而不是
ID
列的值来更改字段,如你的问题中的代码和你的评论中所述,然后使用任何awk:9q78igpj2#
下面是一个只使用coreutil工具的方法。
tail -n+2
截断第一行,paste
使用制表符逐行连接其输入,cut -f1,3,6
输出(连接的)列1、3和6。