如何用另一个文件的第一行替换文件的第一行

时间:2018-02-26 13:38:51

标签: bash text sed replace

我有2个txt文件:file1和file2 我想用file1的第一行替换file2的第一行,并使用 bash 命令

文件1:

 try
        {
            string strText = string.Empty;
            var path = HttpContext.Current.Server.MapPath("~/attached/MAWB/711/114d1.pdf");
            PdfReader reader = new PdfReader(new Uri(path));

            for (int page = 1; page <= reader.NumberOfPages; page++)
            {
                ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();
                String s = PdfTextExtractor.GetTextFromPage(reader, page, its);

                s = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(s)));
                strText = strText + s;

            }
            reader.Close();

            return Ok(strText);
        }
        catch (Exception ex)
        {

            while (ex.InnerException != null)
                ex = ex.InnerException;
            return BadRequest(ex.Message);
        }

file2的:

aaaaaaaa
bbbbbbbb
cccccccc

file2的预期结果:

zzzzzzzz
yyyyyyyy
wwwwwwww

这不能用 sed 完成,因为你不知道要用什么代替......我对吗?那怎么办呢?

修改

所以在我的特定情况下(我在我的openwrt路由器中这样做),有效的是:

aaaaaaaa
yyyyyyyy
wwwwwwww

感谢@Sundeed提供的链接,解释了为什么有些命令只在shell中显示结果而不是在文件中写入:https://mywiki.wooledge.org/BashPitfalls#cat_file_.7C_sed_s.2Ffoo.2Fbar.2F_.3E_file

3 个答案:

答案 0 :(得分:4)

只需使用headtail执行此任务:

head -n 1 Input_file1 && tail -n 2  Input_file2

输出如下:

aaaaaaaa
yyyyyyyy
wwwwwwww

答案 1 :(得分:1)

您当然可以使用sed执行此操作,但为什么会这样做?

sed "1c\\
$(sed 1q file1)
" file2

答案 2 :(得分:1)

或使用ed

f1="file1";f2="file2";printf "%s\n" '2,$d' "r $f2" '2d' "wq $f2" | ed -s "$f1"