Sed命令在内部目录文件中未按预期工作

时间:2016-01-29 05:54:54

标签: bash shell sed

我想删除并替换满足特定条件的目录中的前三行文件。我使用了以下代码:

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
}

该代码适用于当前目录文件,但对子目录文件失败。

请让我知道我哪里出错了。

1 个答案:

答案 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
}