我必须向某人发送代码,但在此之前,我需要删除包含已经参与此项目的不同开发人员名称的评论,我在网上查找结果,我发现了一个Shell脚本,如:
foreach file '(*cpp)'
sed -i "/\b\(Dave\|Alex\)\b/d" $file > tt
mv tt $file
end
但它不起作用,它会创建一个tt
文件,但不会更改文件,下面是我得到的输出:
$ ./Test.sh
./Test.sh: line 2: foreach: command not found
sed: no input files
mv: missing destination file operand after ‘tt’
Try 'mv --help' for more information.
./Test.sh: line 5: end: command not found
我在通过Cygwin存在代码的主目录中运行此脚本。
答案 0 :(得分:0)
您的脚本看起来更像是(t)csh
脚本,而不是(ba)sh
。试试这个:
for f in *.cpp; do
mv $f $f.bak
grep -v '(Dave)|(Alex)' $f.bak > $f
done
然后发送* .cpp(但不是* .cpp.bak)。
请注意,这是一种非常粗糙的方法。如果您在其中一个文件中有代码 其中有一个合法的Dave或Alex子串,那么这条线也会受到冲击。
答案 1 :(得分:0)
这对我有用,虽然我不得不改变扩展和字符串几次
for $(ls * .cpp)
中的文件DO sed' / Dave / d' $ file> TT
mv tt $ file
完成