我只是使用简单的sed替换,通过从变量读取文件中的值来替换文件中的一些字符串
cat文件.txt
root="/content/drive/Shared drives/Media Library"
# some other lines
# ...
在上面的文件txt中,我打算用通过bash脚本读取的变量path
的值来替换第1行中的/content/drive/Shared drives/Media Library
。
例如,如果我输入/home/user
作为变量的值,则file.txt中的第1行应修改如下:
root="/home/user"
这是我的带有sed表达式的bash脚本
#!/usr/bin/env bash
read -e -p "Enter the path: " path
sed -i "1s//content/drive/Shared drives/Media Library/${path}/" file.txt
当我执行bash脚本并输入路径为/home/user
时,它返回以下错误-
sed: -e expression #1, char 52: unknown option to `s'
使用sed
处理文件路径时,可以通过使用不属于要处理的值的备用分隔符来简化操作。分隔符可以是s
命令后面的任何字符。正斜杠/
经常出现在示例中,但也可以是任何其他字符,如|
或#
。这使得不必对值中的/
进行转义。例如:
sed -i "1s|/content/drive/Shared drives/Media Library|${path}|" file.txt