Bash 如何插入文本?

Bash 如何插入文本?,bash,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("b

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

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

cut -b1-8 foo.txt > a
cut -b9- foo.txt > b
paste -d '' a bar.txt b
你可以试试这个

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

好的,我解决了问题。一到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);

@AvinashRaj,
R bar.txt
将读取
bar.txt
中的每一行并将其输出。因此,输出将是,一行来自
foo.txt
,一行来自
bar.txt
。然后,我使用
sed
(另一个)重新排列格式。我将您的答案与答案关联起来。几乎相似,但我无法得到第二个sed部分。请为我解释第二个。@AvinashRaj,
N
将读取下一行并附加到缓冲区中。现在,缓冲区中有两行(一行来自
foo.txt
,另一行来自
bar.txt
)。两行用换行符(
\n
)分隔。例如:
printf(“%f\n\n”,row1.req\u pnttime)\nfoo
。然后,我只是对数据进行分组,并使用back引用(
\1
\2
)重新排列数据。