linux - 如何在 linux 中用另一行替换行

标签 linux bash shell awk replace

我有文件 1:

A1  1  NA
A1  2  NA
A1  3  NA
A1  4  A
A1  5  G
A1  6  T
A1  7  NA
A1  8  NA
A1  9  NA
A2  1  NA
A2  2  NA
A2  3  T
A2  4  NA

和文件 2:

A1  4  A
A1  5  B
A1  6  T
A2  3  T

我想用文件 2 中的值 4、5、6 和 3 替换文件 1 中 A2 的行号 4、5、6 和 3

新文件 3 中的预期输出:-

A1  1  NA
A1  2  NA
A1  3  NA
A1  4  A
A1  5  B
A1  6  T
A1  7  NA
A1  8  NA
A1  9  NA
A2  1  NA
A2  2  NA
A2  3  T
A2  4  NA

我想在 Linux 中尝试这个。 我尝试使用谷歌搜索,但找不到更好的答案。

最佳答案

另一种选择,使用 awk:

awk 'NR==FNR{a[$1,$2]=$0;next} ($1,$2) in a {$0=a[$1,$2]}1' file2 file1
A1  1  NA
A1  2  NA
A1  3  NA
A1  4  A
A1  5  B
A1  6  T
A1  7  NA
A1  8  NA
A1  9  NA
A2  1  NA
A2  2  NA
A2  3  T
A2  4  NA

关于linux - 如何在 linux 中用另一行替换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49486532/

相关文章:

bash - 从文件名中提取日期子字符串

linux - 如何抑制不相关的 ShellCheck 消息?

linux - 命令中的点号是什么意思

linux - 如何让linux在halt运行时断电?

linux - 如何找到包含源的所有目录?

python - 测试命令行实用程序

bash - 按字母顺序按文件名顺序列出文件

python - 如何在内核终端内运行带有库的Python脚本?

linux - 删除静态编译的设备驱动程序模块

c++ - 套接字的 pty 功能