【发布时间】:2019-12-05 07:56:54
【问题描述】:
我有一个带有不同条目的VCF file,我需要根据多个匹配替换(或添加如果不存在)一个子字符串。例如
head file
### OUTPUT:
1 47746672 . A G . . pz_name=GHARTxI16uuT15921;qual=2201;
1 47746672 . C G . . pz_name=GHARMALFI17uuM12201;qual=1932;status=RE;
1 47746675 . C G . . pz_name=GHARIGANI17uuA10531;qual=1541;
1 47746675 . C G . . pz_name=GHARTxI16uuT15921;qual=1440;status=AC;
1 47746675 . C G . . pz_name=GHARFSGSI17uuC19091;qual=816;
# ...
我需要查看一些条件,以便为变异患者的每个组合仅隔离一条特定的行(两者都可以重复,但它们的组合是唯一的)例如以第 4 行为例:
- 那个
$2 == "47746675" && $3 == "C" && $4 == "G" - 和
pz_name=GHARTxI16uuT15921
在这个特定的行中,我需要:
- 如果不存在请添加
status=something; - 将
status=<something-else>替换为status=something(如果存在)
如何在 bash 中使用某种就地替换来完成这一切?可能吗?非常感谢替代性能有效方法的建议!
非常感谢您的任何帮助!
【问题讨论】:
-
"inplace" 编辑只是意味着某些命令(sed、perl、awk、ruby 等)在内部使用临时文件。您可以在命令行上轻松地执行
command file > tmp && mv tmp file并获得相同的结果。所以不要沉迷于“就地”做事,它只是一点点语法糖,没有什么可真正关心的,当然也与性能无关。不清楚您要附加什么 - status=something 但什么是“某物”? -
你从哪里得到
"status=..."?
标签: string bash awk in-place vcf-variant-call-format