如何使用通过管道传输到 sed 的文件名列表查找并替换为变量?

How can I find and replace with a variable using a list of filenames piped to sed?

目前我使用以下方法查找和替换:

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

有没有办法不用多次输入 oldstring 就可以做到这一点?这是我正在尝试但不起作用的方法:

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

我最终决定创建两个 bash 函数来节省输入:

# Function to find and replace.
function ags {
  #!/bin/bash
  ag -l "" | xargs sed -i '' -e "s///g";
}
# Function to delete any lines that contain a string.
function agd {
  #!/bin/bash
  ag -l "" | xargs sed -i '' -e "//d";
}