从多个目录中的多个文件 (.cpp /.h) 中删除特定行
Removing Specific Line from Multiples files (.cpp /.h) in multiple directories
我必须将代码发送给某人,但在此之前我需要删除评论,其中包含从事该项目的不同开发人员的姓名,我在网上查找结果,我找到了一个 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 存在。
您的脚本看起来更像 (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 子字符串,那么这样的行也将被清除。
这对我有用,尽管我不得不多次更改扩展名和字符串
$(ls *.cpp) 中的文件
做
sed '/Dave/d' $文件 > tt
mv tt $文件
完成
我必须将代码发送给某人,但在此之前我需要删除评论,其中包含从事该项目的不同开发人员的姓名,我在网上查找结果,我找到了一个 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 存在。
您的脚本看起来更像 (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 子字符串,那么这样的行也将被清除。
这对我有用,尽管我不得不多次更改扩展名和字符串
$(ls *.cpp) 中的文件
做 sed '/Dave/d' $文件 > tt
mv tt $文件
完成