我是bash的新手,我正在尝试删除我正在创建的文件中的一行。
所以不用多说:
if [[ $(ls -1 | grep 'fichiers.toCheck' | wc -l) -eq 0 ]]; then
touch fichiers.toCheck
fi
find . -name '*.mp4' > fichiers.toCheck
while read p; do
echo $p
sed -i "$p/d" ./fichiers.toCheck
done <fichiers.toCheck
控制台正在给我这个:
sed: 1: "./fichiers.toCheck": invalid command code .
我怀疑sed将行中的“/”解释为参数(该行类似于“./nosound.mp4”。
你的猜测是什么?
编辑2 =正确的语法是-i.bak
sed -i.bak "s@$p@@" fichiers.toCheck
编辑=所以这是我的实验:
1
while read p; do
echo $p
sed -i "/$p/d" fichiers.toCheck
done <fichiers.toCheck
我得到了:
sed: 1: "fichiers.toCheck": invalid command code f
2
sed -i "@$p@d" fichiers.toCheck
和同样的错误:
sed: 1: "fichiers.toCheck": invalid command code f
答案 0 :(得分:1)
您的[plugin GetFilterIface] Returning filter: main.plgFilter {}
GetFilterIface result: main.plgFilter {} <nil>
Name: Bob
Age: 23
语法错误,要从sed
变量中删除包含模式的行。同时在bash
中使用FreeBSD
原生sed
使用OS X
进行就地编辑。
-i.bak
如果您怀疑自己的变量包含sed -i.bak "/$p/d" fichiers.toCheck
,请将/
分隔符更改为sed
并使用传统模式@
样式,并将替换部件设置为空,即
s/<pattern>/<replacement>/