bash - 使用 awk 从特定行添加列

标签 bash awk

编辑:

我想向文件添加一列,但只能从特定行开始。要添加的列存储在另一个文件中,该文件有几列,我只想添加第三列。与第二个文件相比,第一个文件有两个额外的行(第一行和第二行)。我还想在第二行(在此行的末尾)添加一个额外的字符串

这是一个显示我想要的示例:

$ cat file1.txt
file1
index place value
1 A 0.1
2 A 0.3
3 B 0.1
4 B 0.6

$ cat file2.txt
A 1 0.3
A 1 0.4
B 1 0.4
B 1 0.6

这将是所需的输出

$ cat output.txt
file1
index place value score
1 A 0.1 0.3
2 A 0.3 0.4
3 B 0.1 0.4
4 B 0.6 0.6

提前致谢

最佳答案

您可以使用tailpasteecho:

awk 'NR==1; NR==2{print $0, "score"} NR>2{a[++i]=$0} NR>FNR{print a[FNR], $NF}' file1 file2
file1
index place value score
1 A 0.1 0.3
2 A 0.3 0.4
3 B 0.1 0.4
4 B 0.6 0.6

PS:要获取格式化的表格输出,请使用column -t:

awk 'NR==1;NR==2{print $0, "score"} NR>2{a[++i]=$0} NR>FNR{print a[FNR], $NF}' file1 file2|
     column -t
file1
index  place  value  score
1      A      0.1    0.3
2      A      0.3    0.4
3      B      0.1    0.4
4      B      0.6    0.6

关于bash - 使用 awk 从特定行添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742089/

相关文章:

linux - 按回车键,或者在 bash 脚本中写 yes

用于成对比较的 Bash 脚本

linux - "find -ls"具有适当的时间样式

regex - 按特定模式对文本文件中的列重新排序

linux - 从文件中读取列并使用值运行命令

bash - 如何在 awk 中打印到 bash 文件描述符

regex - 使用 sed 将空 CSV 值替换为 NULL

perl - 查找输入值大于或等于键且记录未排序的最近键匹配

curl - 我如何将 jenkins 构建持续时间从毫秒转换为 hr :min:sec

linux - 狂欢 : Search Contents of File A in File B and Print lines of File A in File C