Изменить строку, если оригинал не соответствует определенной строке.

У меня есть файл с миллионами строк и вы хотите изменить значения в столбце A, только если строка «.». Модификацией было бы добавить "chr:"$2":"$3 к началу строки. Все остальные строки будут напечатаны как оригинальная версия.

Пример ввода:

 ABCDEFGH rs125 2 5433 T TACA A 3 2 chr2:4543 2 4543 IR 8 2 rs123 3 4332 AC 9 3 . 3 7654 IR 8 

Выше, четвертый ряд начинается с '.' и его необходимо изменить на «chr3: 7654». Все остальные строки должны оставаться неизменными.

Желаемый результат:

 ABCDEFGH rs125 2 5433 T TACA A 3 2 chr2:4543 2 4543 IR 8 2 rs123 3 4332 AC 9 3 chr3:7654 3 7654 IR 8 2 

Мой код до сих пор работает, но меняет ВСЕ имена, чтобы начать «chr …», даже когда «rs …» должен оставаться неизменным:

 awk '($1 ~ /^./) {$1 = "chr:"$2":"$3}1' filename > newfilename 

Это, вероятно, очень простое решение, но оно вызывает очень большие проблемы. Благодаря!

  • Печать столбцов, начинающихся с определенной строки
  • Сравните два файла и напечатайте только первое слово строк, которые не совпадают со строкой
  • Назначение в фигурных скобках и внешних фигурных скобках в awk
  • Мониторинг и предупреждение пользователя при изменении настроек stty?
  • Добавьте число в огромный файл ASCII
  • Создайте поле, которое может хранить значения, вычисленные из значений в другом файле
  • Чтобы удалить лишнее пространство из строки с помощью команды оболочки
  • Список всех пар слов, которые отображаются в строке вместе в файле
  • One Solution collect form web for “Изменить строку, если оригинал не соответствует определенной строке.”

    Ваша проблема в регулярном выражении. /^./ будет соответствовать любому действительному символу в начале строки. Вы должны убежать . чтобы соответствовать буквально:

     awk '$1 ~ /^\./ {$1 = "chr:"$2":"$3};1' filename > newfilename 

    Но лучше просто проверить, что строка равна, а не проверять регулярные выражения:

     awk '$1 == "." {$1 = "chr:"$2":"$3};1' filename > newfilename 
    Interesting Posts

    aes-x86_64.ko Нет такого файла или каталога для сбоя установки модуля после 4.12.9 Компиляция ядра

    Определите семейство процессоров Intel для компилятора C?

    Как заставить интернет работать с малиной pi, подключенной к ПК через Ethernet-кабель?

    Добавить команду «закончена» после использования определенной команды

    Перезагрузите загруженный диск в режим только для чтения

    Есть что-то вроде одноразового судо?

    Как я могу просмотреть некоторые примечания к выпуску?

    Сокращенные длинные опции в командной строке xclip

    patch: «дескриптор« плохих файлов »в сочетании с каналом и LD_PRELOAD / libtrash

    Прослушать порт, который уже указан как исходный порт установленного соединения?

    TCL Script – ожидается, когда scp будет выполнен

    Быстрый FTP-сервер с командной строкой?

    SMTP Auth – SASL на Dovecot, Postfix и CentOS 6.2 (и Open-Xchange)

    Каковы альтернативы для запуска и остановки конфигурации openvpn в Debian Jessie?

    Яркость на моем Lenovo SL510 составляет всего 100% и 0%?

    Linux и Unix - лучшая ОС в мире.