如何插入文字?

时间:2014-04-07 11:07:31

标签: bash

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 个答案:

答案 0 :(得分:4)

你可以试试这个,

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);

答案 1 :(得分:3)

好的,我发现了问题。一个通过awk,

$ 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);

答案 2 :(得分:2)

假设文本始终与同一列对齐,您可以这样做:

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