Intereting Posts
Метод командной строки для поиска повторяющихся опечаток с номерами строк Вызовите 'ps' как обычный пользователь в Linux Заголовок "sys / ioctl.h" в Linux Как отключить светодиод блокировки прокрутки, указывая раскладку клавиатуры, когда ПК выключен uniq показывает повторяющиеся строки Существуют ли анализаторы безопасности на уровне системы для конфигурации дистрибутива Linux? Вывод в stdout работает, сбой при перенаправлении в файл или в fifo Как мне вызвать текущую «.bash_history» из скрипта? Преобразование файла с целыми числами, написанными в ascii, в двоичный файл целых чисел как изменить `rm` на команду как` mv ~ / .trash` Как подсчитать аналогичные результаты в нескольких столбцах в Libre Office Calc? Ужасный GNOME распознает мои медиа-ключи, но не действует на них Команда PHP exec имеет результат 0, даже если возникает ошибка Могут ли файлы tarening улучшить сжатие? Как добавить ярлыки в PDF?

Замена двух шаблонов в текстовых файлах одновременно

У меня есть текстовый файл, содержащий цифры следующим образом:

34 77 1716 150?.2 67.5892 11.9691 23 1?6 83 35 78 0 0 0 0 0 0 0 36 79 0 0 0 0 0 0 0 37 80 0 0 ? ? 0 0 0 38 81 0 0 0 ? 0 0 0 39 82 0 0 0 0 ? 0 ? 40 85 169 152.8 81.5917 22.3759 18 118 100 41 251 1412 131? 97.7358 16.6563 37 126 89 42 252 578 488.5 88.?502 23.9728 29 124 95 43 253 585 518.6 95.4444 19.6661 19 119 100 44 254 576 533.2 96.4271 18.5693 13 119 106 45 255 1424 1313.3 94.7584 21.7414 14 146 132 

Я хотел бы заменить каждый ? с 0 и каждый 0 с ? в то же время, поэтому приведенная выше таблица выглядит так:

 34 77 1716 15?0.2 67.5892 11.9691 23 106 83 35 78 ? ? ? ? ? ? ? 36 79 ? ? ? ? ? ? ? 37 8? ? ? 0 0 ? ? ? 38 81 ? ? ? 0 ? ? ? 39 82 ? ? ? ? 0 ? 0 4? 85 169 152.8 81.5917 22.3759 18 118 1?? 41 251 1412 1310 97.7358 16.6563 37 126 89 42 252 578 488.5 88.05?2 23.9728 29 124 95 43 253 585 518.6 95.4444 19.6661 19 119 1?? 44 254 576 533.2 96.4271 18.5693 13 119 1?6 45 255 1424 1313.3 94.7584 21.7414 14 146 132 

Как мне это сделать?

    Я думаю, так как вы меняете только отдельные символы, tr может быть хорошим инструментом для работы.

    Попробуйте что-то вроде этого:

     tr '0?' '?0' < log.txt 

    Так как вы хотите поменять отдельные символы, вы можете использовать команду y в sed для транслитерации:

     sed 'y/?0/0?/' infile 

    Допустим, этот текст находится в файле с именем log.txt , просто запустите эту команду:

     sed "s/?/tmp/g;s/0/?/g;s/tmp/0/g" log.txt