Я хочу извлечь значение в каждой строке файла, которая идет после 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
Все, что изменилось, это g
после того, как AA=
заменено на верхний регистр.
sed 's/\bAA=[^;=|]*\b/\U&/'
.. если у вас нет GNU sed, попробуйтеperl -pe 's/\bAA=[^;=|]*\b/\U$&/'
- person Sundeep   schedule 21.03.2018