Что не так с этим sed?

Вы должны написать свой собственный небольшой сценарий оболочки для этого. Например, "myrsync" в вашем PATH держит:

#!/bin/bash
ok(){
  if [ -t 0 ] &&
     read -p "ok? $* ? " reply && 
     [ "$reply" = y -o "$reply" = ok ] 
  then "$@"
  fi
}

if [ -f .myrsync ]
then ok rsync $(<.myrsync)
else echo "no .myrsync here in $PWD"
fi

Здесь есть функция ok, которая проверяет, что stdin является терминалом, затем спрашивает вас о найденной команде rsync и, если вы отвечаете "y", запускает ее. Остальная часть сценария проверяет наличие файла .myrsync и, если он найден, запускает функцию на его содержимом.

0
18.07.2017, 16:41
2 ответа

С базовыми регулярными выражениямиsedбудет интерпретировать +буквально, для выполнения необходимой подстановки используйте *квантификатор:

cat sedtest | sed 's/.*relvir$/1.2.3.4 relvir/'

Чтобы продолжить обработку +в качестве квантификатора, используйте расширенные регулярные выражения применяя параметр -E:

cat sedtest | sed -E 's/.+relvir$/1.2.3.4 relvir/'
2
28.04.2021, 23:58

Думаю, это то, что вы ищете

cat sedtest | sed 's/.\+relvir$/1.2.3.4 relvir/'

0
28.04.2021, 23:58

Теги

Похожие вопросы