将filename变量传递给sed命令

Ben*_*Ben 4 unix bash shell sed

我试图编写一个小shell脚本,首先使用日期定义文件名,然后运行两个sed命令,删除某些字符.

我的代码如下:

filename=/var/local/file1/tsv_`date '+%d%m%y'`.txt
sed -i 's/\("[^,]*\)[,]\([^"]*"\)/\1\2/g' '&filename'
sed -i 's/\"//g' '&filename'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

sed: can't read &filename: No such file or directory
sed: can't read &filename: No such file or directory
Run Code Online (Sandbox Code Playgroud)

问题是,如何将此文件名变量传递给sed命令?

谢谢

Edu*_*eda 7

在进行shell脚本编写时,对于引用变量,不使用&(和号),而是使用$(美元符号):

filename=/var/local/file1/tsv_`date '+%d%m%y'`.txt
sed -i 's/\("[^,]*\)[,]\([^"]*"\)/\1\2/g' "$filename"
sed -i 's/\"//g' "$filename"
Run Code Online (Sandbox Code Playgroud)

另外,在引用变量时,必须使用双引号,否则,bash不会解释$符号的含义.