【发布时间】:2018-08-30 12:24:06
【问题描述】:
我想提取AA 之后文件的每一行中的值。我可以这样做:
awk -F'[;=|]' '{for(i=1;i<=NF;i++)if($i=="AA"){print toupper($(i+1));next}}'
这为我提供了我需要的确切信息并转换为大写,这正是我想要做的。我怎样才能做到这一点,然后在其先前位置打印具有此更改值的整行?我实际上是在尝试查找和替换值更改为大写的位置。
编辑:
这是一个示例输入行:
11 128196 rs576393503 A G 100 PASS AC=453;AF=0.0904553;AN=5008;NS=2504;DP=5057;EAS_AF=0.0159;AMR_AF=0.0259;AFR_AF=0.3071;EUR_AF=0.006;SAS_AF=0.0072;AA=g|||;VT=SNP
这是我希望输出的样子:
11 128196 rs576393503 A G 100 PASS AC=453;AF=0.0904553;AN=5008;NS=2504;DP=5057;EAS_AF=0.0159;AMR_AF=0.0259;AFR_AF=0.3071;EUR_AF=0.006;SAS_AF=0.0072;AA=G|||;VT=SNP
所有更改的只是AA= 更改为大写后的g。
【问题讨论】:
-
请添加示例输入行和预期输出以帮助测试可能的解决方案..
-
我已编辑我的问题以包含此信息。谢谢。
-
如果你有 GNU sed,这对你所有的输入情况都有效吗?
sed 's/\bAA=[^;=|]*\b/\U&/'.. 如果你没有 GNU sed,试试perl -pe 's/\bAA=[^;=|]*\b/\U$&/' -
谢谢!效果很好!