Replace first few lines with first few lines from other file

后端 未结 3 390
夕颜
夕颜 2020-12-18 10:10

I am working on Linux. I have 2 files - file1.dat and file2.dat.

cat file1.dat
1
2
3
4
5
6
7
8
9
10

and for file2:

cat file         


        
3条回答
  •  抹茶落季
    2020-12-18 10:34

    Assuming GNU sed

    $ sed '3q' f2 | sed -e '3r /dev/stdin' -e '1,4d' f1
    1a
    2a
    3a
    5
    6
    7
    8
    9
    10
    
    • sed '3q' f2 gives the first three lines from second file
    • -e '3r /dev/stdin' use stdin data
    • -e '1,4d' delete required lines
    • order is important - first r then d


    For small number of lines, you can also use

    sed -e '3R f2' -e '3R f2' -e '3R f2' -e '1,4d' f1
    

    R command reads one line at a time


    With GNU coreutils, this would probably be better for all/most scenarios

    head -n3 f2; tail -n +5 f1
    

提交回复
热议问题