Удалить точку(.) из определенных столбцов с использованием gsub и awk
Я хочу удалить точку(.) только из 4-й и 5-й столбцы таблицы.
input
1 10057 . A AC
1 10146 . AC. A
1 10177 . A AC
1 10230 . AC .A,AN
1 10349 . CCCTA C,CCCTAA.
1 10389 . .AC A,AN
desired output
1 10057 . A AC
1 10146 . AC A
1 10177 . A AC
1 10230 . AC A,AN
1 10349 . CCCTA C,CCCTAA
1 10389 . AC A,AN
Итак, я попробовал следующую команду.
awk 'BEGIN {OFS=FS="t"} {gsub(".","",);gsub(".","",)}1' input
и я получил этот результат (все 4-й и 5-й столбцы были удалены).
1 10057 .
1 10146 .
1 10177 .
1 10230 .
1 10349 .
1 10389 .
не могли бы вы указать, где я должен изменить? Спасибо заранее.
1 ответов
когда вы используете строку для удержания RE (например,"\."
) строка анализируется дважды-один раз, когда скрипт читается awk, а затем снова при выполнении awk. В результате вам нужно дважды избежать метасимволов RE (например,"\."
).
лучшее решение во всех отношениях-не указывать RE Как строку, а указывать ее как константу RE, используя соответствующие разделители, например /\./
:
awk 'BEGIN {OFS=FS="\t"} {gsub(/\./,"",);gsub(/\./,"",)}1' input