使用sed / cat在多个文件中的匹配模式之后从1个文件添加文本

时间:2019-04-13 06:39:50

标签: sed cat

我需要将文本从1个文件添加到2个标签之间的多个文件中。所有文件都具有相同的扩展名.sh,但名称不同,并且全部位于子目录中。

我尝试修改它,但是它仅适用于搜索和替换:

    com.itextpdf.text.Document mDoc = new com.itextpdf.text.Document();

    String mFileName = new SimpleDateFormat("YYYY-MM-DD-HH-MM-SS", Locale.getDefault()).format(System.currentTimeMillis());

    String mFilePath = Environment.getExternalStorageDirectory() + "/" + mFileName  + ".pdf";


    try
    {
        PdfWriter.getInstance(mDoc, new FileOutputStream(mFilePath));

        mDoc.open();

        for(int d = 0; d < g; d++)
        {
            String mtext = answers.get(d);

            mDoc.add(new Paragraph(mtext));

        }

        mDoc.close();

    }
    catch (Exception e)
    {

    }

}

file1.txt

file=$(cat file1.txt)
replace="s/end=date +%s/$file/g";
find . -type f -name '*.sh' -print0 | xargs -0 sed -i "$replace" 

最终输出和file1.txt的内容作为新行添加到end.date +%s下,添加到所有.sh文件中

some text here
some text here
some text here
some text here
some text here

1 个答案:

答案 0 :(得分:0)

在bash shell上尝试gnu sed,在没有-i选项的情况下对其进行测试;

sed -E '/end=date\s+\+%s/r file1.txt' *.sh

在测试后,将-i选项添加到实际编辑中,例如sed -Ei ....
要递归搜索子中的文件,请使用find进行操作,然后将找到的文件发送到sed
查找〜+ -iname'* .sh'-exec sed -E'/ end = date \ s ++%s / r file1.txt''{}'+