如何使用 bash 脚本将文件路径添加到文件的指定行?

如何使用 bash 脚本将文件路径添加到文件的指定行?

我有以下 bash 代码:

    echo "Enter an input path"
    read -e input_path

    OLDTEXT="\put(0,0){\includegraphics{/"
    NEWTEXT="\put(0,0){\includegraphics{$input_path/"

    find . -name "*.tex" -print0 | xargs -0  sed -i '$NEWTEXT' -e '$OLDTEXT'

sed 行总是产生错误。此版本的代码产生以下错误消息:

sed:-e 表达式 #1,字符 2:未知命令:`O'

帮助?

答案1

您需要转义反斜杠:

oldtext='[\]put(0,0){[\]includegraphics{/'
newtext="\\\\put(0,0){\\\\includegraphics{$input_path/"

另外,-i不要-e做你期望的事情。尝试:

sed "s|$oldtext|$newtext|" file

如果以上内容满足您的要求,则使用-i它来更改文件:

find . -name '*.tex' -exec sed -i "s|$oldtext|$newtext|" {} \;

使用 GNUfind或现代 BSD时find,使用以下方法更高效:

find . -name '*.tex' -exec sed -i "s|$oldtext|$newtext|" {} +

答案2

这没有意义:sed -i '$NEWTEXT' -e '$OLDTEXT'——即使你正确地使用双引号以便变量可以扩展,这些值也不是有效的 sed 命令。

我假设您正在尝试搜索和替换:

sed -i "s#$OLDTEXT#$NEWTEXT#"

相关内容