我有文件1:
A1 4 A
A1 5 B
A1 6 T
A2 3 T
文件2:
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
我想将文件1中的第4,5,6和3行替换为文件2中的值4,5,6和3
新文件3中的预期输出: -
History API
我想在Linux中尝试这个。 我试过谷歌搜索,但我找不到更好的答案。
答案 0 :(得分:1)
使用join:
join -a 2 file2 file1 | cut -d ' ' -f -2
其中file1是原始文件,file2是包含替换字段的文件。
编辑:自发布此问题以来,问题的要求已经更改;它最初要求加入两个文件,每个文件有两列。对于新格式,这个awk脚本可以工作:
cat file1 file2 | awk '
BEGIN { OFS = " " }
{ rows[$1 OFS $2] = $3 }
END { for (r in rows) print(r, rows[r]) }
' | sort -V >file3
使用问题中指定的文件输出:
$ cat file3
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
答案 1 :(得分:1)
使用awk的另一种选择:
company <- c("Aa", "Bb", "Cc", "Dd")
sector <- c("B", "A", "E", "Z")
lastmarketcap <- c(18, 4571, 122, 239)
X200201 <- c(12, 4567, 121, 234)
X200202 <- c(13, 4568, 121, 236)
X200203 <- c(16, 4568, 122, 237)
X200204 <- c(18, 4571, 122, 239)
databasis <- data.frame(company, sector, lastmarketcap, X200201, X200202, X200203, X200204)
答案 2 :(得分:0)
如果您已使用结构在文件中插入数据,则可以使用相同的结构使用循环检索第n个条目并分别替换它!
否则,如果您手动插入数据,则只需遍历文件中的(n-1)个&#39; \ n&#39;并检索以下数据!