Инкрементная арифметика Sed

Я хочу заменить число в конце строки, увеличивая число на каждый каждый раз, когда я запускаю определенную строку sed. строка выглядит так:

Сервер-порт = 25555

Я думал, что смогу запустить что-то вроде этой линии sed, но это не сработает.

sed -i 's/port=[0-9]{5}/int(&+1)/' 

2 Solutions collect form web for “Инкрементная арифметика Sed”

Я бы предложил perl вместо sed для этой задачи:

 perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename 

Если вы не возражаете против многострочного интерфейса, вы можете обойти его с помощью команды sed и shell с помощью:

 # or however else you're getting the server-port section num=$(echo server-port=25555 | sed 's/server-port=//') v=$((v+1)) sed -i "s/server-port=25555/server-port=$v/" your-file-here 

Обратите внимание на двойные кавычки вокруг выражения sed; это так, что $ v можно интерпретировать, прежде чем sed увидит его. В этом конкретном случае вы можете оставить выражение sed без кавычек, так как там нет ничего другого для оболочки (mis) -interpret.

  • Дата установки Ubuntu
  • Как узнать, работает ли команда patch?
  • Ubuntu 15.10 - Невозможно отключить демон с помощью Systemd
  • Могу ли я заразиться в этом случае, если я запустил live cd?
  • Когда система Linux (Ubuntu) отключается, какие процессы отправляются SIGTERM?
  • Как я могу совместно использовать внутренний диск через NFS? (Что я делаю не так?)
  • Linux на старом компьютере Dell
  • Сетевые интерфейсы до порядка, проблема с туннелем ipv6
  • Как переименовать параметры загрузки с двойной загрузкой
  • Windows 7 / Ubuntu 11 с двойной загрузкой плюс VM?
  • Минимальная демонстрация VLC с HIP для Linux (HIPL)
  • Linux и Unix - лучшая ОС в мире.