gpt4 book ai didi

sed - 在 sed -f 中使用变量(其中 sed 脚本在文件中而不是内联)

转载 作者:行者123 更新时间:2023-12-04 17:02:19 29 4
gpt4 key购买 nike

我们有一个进程可以使用包含 sed 的文件更改管道输入的命令。

我需要用变量值替换输入中的占位符,例如在一个 -e我可以运行的命令类型;

$ echo "Today is XX" | sed -e "s/XX/$(date +%F)/"
Today is 2012-10-11

但是我只能指定 sed文件中的方面(然后将进程指向文件),例如一个名为 replacements.sed 的文件可能包含;
s/XX/Thursday/

很明显;
$ echo "Today is XX" | sed -f replacements.sed
Today is Thursday

但是,如果我想使用环境变量或 shell 值,我找不到使其扩展的方法,例如如果 replacements.txt包含;
s/XX/$(date +%F)/

然后;
$ echo "Today is XX" | sed -f replacements.sed
Today is $(date +%F)

在文件文本中包含双引号只会打印双引号。

有谁知道在 sed 中使用变量的方法?文件?

最佳答案

这可能对您有用(GNU sed):

cat <<\! > replacements.sed
/XX/{s//'"$(date +%F)"'/;s/.*/echo '&'/e}
!
echo "Today is XX" | sed -f replacements.sed

如果您没有 GNU sed,请尝试:
cat <<\! > replacements.sed
/XX/{
s//'"$(date +%F)"'/
s/.*/echo '&'/
}
!
echo "Today is XX" | sed -f replacements.sed | sh

关于sed - 在 sed -f 中使用变量(其中 sed 脚本在文件中而不是内联),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830940/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com