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
)重新排列数据。