Bash 使用sed命令和readlink(或similar)将完整路径替换为文本
我正在编写一个BASH脚本,希望在其中使用Bash 使用sed命令和readlink(或similar)将完整路径替换为文本,bash,sed,Bash,Sed,我正在编写一个BASH脚本,希望在其中使用sed将文件的完整路径替换为文本 我目前有: Path= readlink -e /home/user/Videos/*.mp4 sed -i "s/original_text/$Path/g" /home/user/Documents/Text.txt 其想法是将单个MP4视频(该文件夹中没有其他视频)的路径替换为文本文件,这样我就不必每次替换视频时都写入视频的名称 我尝试了不同的方法解决这个问题,但我不能让它工作 提前感谢。使用命令替换将命令的输出
sed
将文件的完整路径替换为文本
我目前有:
Path= readlink -e /home/user/Videos/*.mp4
sed -i "s/original_text/$Path/g" /home/user/Documents/Text.txt
其想法是将单个MP4视频(该文件夹中没有其他视频)的路径替换为文本文件,这样我就不必每次替换视频时都写入视频的名称
我尝试了不同的方法解决这个问题,但我不能让它工作
提前感谢。使用命令替换将命令的输出保存在变量中:
Path="$(readlink -e /home/user/Videos/*.mp4)"
此外,在声明变量时,shell不支持=
周围的任何空格
如果有多个文件,最好使用数组:
Paths=( $(readlink -e /home/user/Videos/*.mp4) )
并通过
“${Paths[@]}”
使用命令替换将命令的输出保存在变量中来访问数组元素:
Path="$(readlink -e /home/user/Videos/*.mp4)"
此外,在声明变量时,shell不支持=
周围的任何空格
如果有多个文件,最好使用数组:
Paths=( $(readlink -e /home/user/Videos/*.mp4) )
并通过
“${Path[@]}”访问数组元素
我相信您的$Path
具有斜杠(/)
的值,例如/home/user/Videos/foo.mp4
,这将使您的sed
失败。您可以对sed的s
命令使用其他分隔符
试试这句话:
sed -i "s@original_text@$Path@g" /home/user/Documents/Text.txt
你也应该引用你的
readlink
命令,并删除=
后面的空格。我相信你的$Path
有斜杠(/)
的值,例如/home/user/Videos/foo.mp4
,这会使你的sed
失败。您可以对sed的s
命令使用其他分隔符
试试这句话:
sed -i "s@original_text@$Path@g" /home/user/Documents/Text.txt
您还应该引用您的
readlink
命令,并删除=
之后的空格。您得到的错误是什么?您得到的错误是什么?