Как я могу найти и заменить на переменную, используя список имен файлов, переданных в sed?

В настоящее время я нахожу и заменяю, используя следующее:

ack -l oldstring | xargs sed -i '' -e s/oldstring/newstring/g

Есть ли способ сделать это без необходимости печатать oldstring больше чем единожды? Это то, что я пытаюсь, что не работает:

ack -l oldstring | xargs sed -i '' -e s/{}/newstring/g

1 ответ

Решение

Я наконец решил создать две функции bash для сохранения ввода:

# Function to find and replace.
function ags {
  #!/bin/bash
  ag -l "$1" | xargs sed -i '' -e "s/$1/$2/g";
}
# Function to delete any lines that contain a string.
function agd {
  #!/bin/bash
  ag -l "$1" | xargs sed -i '' -e "/$1/d";
}
Другие вопросы по тегам