文本粘贴的一个问题

我有一个文件a.txt,格式如下:

aaaa

aaaa

现在想在每行结尾粘贴文字,要粘贴的文字在另一个文件b.txt,格式如下:

bbbb

cccc

dddd

每一行都不同

想达到的结果是,把b.txt粘贴到a.txt对应的行的结尾

比如b.txt第一行粘贴到a.txt第一行结尾,以此类推

请问在emacs里面要怎么做

补充,请教了一位大神,他给的方法是用evil

安装evil-mode,然后在a.txt里面用normal模式输入:read b.txt就可以了

我想请教是否还有别的办法,不借助evil的情况下

1 个赞

insert-file

是直接在a.txt的第一行行尾插入b.txt吗,马上试试看

这样不能解决问题,它是直接在光标之后插入整个b.txt,没有实现行对行的粘贴

c-space 设置 mark 再 c-x r k 剪切矩形

c-x r y 粘贴矩形

有道理,这个应该可行,我再去试试看

成功了,感谢

如果有使用 awk 条件的话,使用这个就够了

awk 'NR==FNR{a[FNR]=$0;next}NR>FNR{print a[FNR],$0}' f1 f2 > f3

可以使用,这个更好,谢谢大神

如果是gawk,这个命令适用吗,windows平台,我用上面的命令并没有成功

不好意思,之前的错了,试试这个.

尝试之后还是没有结果,生成了一个空文档

awk ‘NR==FNR{a[FNR]=$0;next}NR>FNR{print a[FNR],$0}’ f1 f2 > f3

空文档就不对劲了啊,

来自大佬 @Youmu 的方案:

paste file1 file2

之前的那个还是不行, 只能输出到 file2 的长度(我太菜了),然后想了个更笨的法子

awk 'NR==FNR{a[FNR]=$0;next}NR>FNR{b[FNR]=$0;next}; END{vlength=(length(a)<length(b)?length(b):length(a)); for(i=1; i<=vlength; i++) {printf  "%s%s\n", a[i], b[i]}}' file1 file2 > file3

额,这么大一段代码,我吃完饭直接复制粘贴 :joy:

paste -d '\0' file1 file2

这样才能保证2个文件的行合并后中间没空格

学到了紫薯布丁

我编译了paste,可以实现,只是在每行合并的地方会多出换行符^M,这是windows下的特色

gawk应该是功能有残缺,我使用了几个表达式都没有输出

awk ‘{getline f2 < “file_2”; print $0"\t"f2}’ file_1

你可以试一下上面的这个在,看能不能实现