Замена определенного номера в файлах unix

Я хочу создать комманд, который может заменить определенный номер в файловой системе Unix, например:

ZAR ZEC ZDA -9 2 3 4 8 -9 5 6 7 

У меня ZAR , ZEC , ZDA как мой заголовок и -9 в ZDA должны быть заменены на +9 . Какую команду следует писать, чтобы она изменила, в частности, это число, не изменяя значения других, например «-9», присутствующие в поле ZAR .

2 Solutions collect form web for “Замена определенного номера в файлах unix”

Чтобы изменить любое значение -9 в третьем столбце вашего файла на +9 :

 $ awk '$3==-9 {$3="+9"} 1' OFS='\t' file ZAR ZEC ZDA -9 2 3 4 8 +9 5 6 7 

$3==-9 выбирает строки, для которых третий столбец -9 . Для этих строк назначение $3="+9" изменяет этот столбец на +9 . 1 – критическая стенограмма awk для печати. Наконец, OFS='\t' сообщает awk распечатать вывод, используя вкладку в качестве разделителя полей.

Изменение файла на месте

Использование GNU awk (Linux):

 awk -i inplace '$3==-9 {$3="+9"} 1' OFS='\t' file 

Использование BSD / OSX awk:

 awk '$3==-9 {$3="+9"} 1' OFS='\t' file >tmp && mv tmp file 
 $ cat file ZAR ZEC ZDA -9 2 3 4 8 -9 5 6 7 

Поскольку столбец ZDA является последним полем,

 $ sed 's/-9$/+9/' file ZAR ZEC ZDA -9 2 3 4 8 +9 5 6 7 

Чтобы изменить сам входной файл, используйте -i для версии GNU (или -i.bak на OSX / BSD)

 sed -i 's/-9$/+9/' file 
  • Сценарий оболочки зависает по команде mail
  • Сценарий Bash для извлечения ключевых слов из текущего каталога
  • Какая команда (ы) будет кормить текстовый файл с разделителями табуляции и вырезать каждую строку до 80 символов?
  • Как захватить форматирование текста в bash?
  • Env-переменные не загружаются в bash
  • Лучший способ запуска одиночного цикла вместо двух для циклов
  • Поиск шаблона и удаление рисунка без влияния на остальную часть строки
  • Bash заменить символы на выходе
  • Как добавить / удалить задания cron по сценарию?
  • Сообщения на новом терминале после использования nohup
  • Запуск команды в новом окне терминала через Python
  • Linux и Unix - лучшая ОС в мире.