我想删除并替换满足特定条件的目录中的前三行文件。我使用了以下代码:
test=find . -name "*.java"
testing $test
function testing{
for var in $@
do
echo $var
if head -3 $var | grep '^ \*$';then
echo "in if"
sed '1,3d' $var > tmp.java; mv tmp.java $var
echo -e "/**\n* new text\n**/" | cat - $var > temp.java
done
}
该代码适用于当前目录文件,但对子目录文件失败。
请让我知道我哪里出错了。
答案 0 :(得分:0)
您的脚本难以阅读,但要替换第一行代码,您可以像这样使用sed命令
sed -i '1,3s/.*/REPLACE_TEXT/' JAVA_FILE
您的脚本应如下所示
test=$(find . -name "*.java")
testing $test
function testing{
for var in $@
do
echo $var
if head -3 $var | grep '^ \*$';then
echo "in if"
sed -i '1,3s/.*/REPLACE_TEXT/' $var
fi
done
}