代码之家  ›  专栏  ›  技术社区  ›  Avinash Raj

如何插入文本?

  •  -2
  • Avinash Raj  · 技术社区  · 11 年前

    foo.txt 包括

    printf("%f \n\n",row1.req_pnttime);
    printf("%f \n\n",avinash);
    printf("%f \n\n",foo);
    printf("%f \n\n",bar);
    

    bar.txt 包括,

    foo
    bar
    foo1
    bar1
    

    我想在指定的位置将bar.txt的第一行和foo.txt的第一行都组合起来。所有行都是这样。如下所示,

    预期输出:

    printf("foo%f \n\n",row1.req_pnttime);
    printf("bar%f \n\n",avinash);
    printf("foo1%f \n\n",foo);
    printf("bar1%f \n\n",bar);
    

    我尝试了下面的方法,但不起作用。

    awk -v FS="\"" -v OFS="\"" 'FNR==NR{a=$0;}{$2=a[FNR]$2}1' bar.txt foo.txt
    
    3 回复  |  直到 10 年前
        1
  •  3
  •   sat    11 年前

    你可以试试这个,

    sed 'R bar.txt' foo.txt | sed 'N;s/^\(.*\)\(%.*\)\n\(.*\)/\1\3\2/'
    

    测验 :

    sat:~# sed 'R bar.txt' foo.txt | sed 'N;s/^\(.*\)\(%.*\)\n\(.*\)/\1\3\2/'
    printf("foo%f \n\n",row1.req_pnttime);
    printf("bar%f \n\n",avinash);
    printf("foo1%f \n\n",foo);
    printf("bar1%f \n\n",bar);
    
        2
  •  3
  •   Avinash Raj    10 年前

    好的,我解决了问题。一个通过锥子,

    $ awk -v FS="\"" -v OFS="\"" 'FNR==NR{a[FNR]=$0;next}{$2=a[FNR]$2}1' bar.txt foo.txt
    printf("foo%f \n\n",row1.req_pnttime);
    printf("bar%f \n\n",avinash);
    printf("foo1%f \n\n",foo);
    printf("bar1%f \n\n",bar);
    
        3
  •  2
  •   ams    11 年前

    假设文本始终与同一列对齐,则可以执行以下操作:

    cut -b1-8 foo.txt > a
    cut -b9- foo.txt > b
    paste -d '' a bar.txt b