为了举例,我有两个文件:
文件A.txt
1.
2.
3.
文件B.txt
ABC
防御
高血压
我想合并以获得:
输出.txt
1.ABC
2.防御
3.GHI
我需要合并每一行,将一个文件的内容放在行首,将另一个文件的内容放在行后。我无法手动执行此操作,因为有超过 30,000 行。我使用的是 Windows,但如果需要,我可以安装 Linux。
我确实搜索过在这个网站和整个互联网上,但我只找到了非常老旧和过时的帖子、合并多个文件但不是逐行合并的解决方案,或者需要太多编码知识的解决方案,而我缺乏这些知识。我也尝试使用 excel 合并两列,但我无法绕过 256 个字符的限制。如果已经有了答案,很抱歉,我错过了。任何帮助都非常感谢。谢谢。
答案1
使用paste
命令,例如
$ paste FileA.txt FileB.txt
1. ABC
2. DEF
3. GHI
注意:添加-d' '
以避免在列之间添加空格。
要将输出重定向到新文件,请附加:> NewFile.txt
。
在 Windows 上,您可以安装Git 外壳或者赛格威. 或者使用适用于 Windows 的 Docker。
答案2
在 Linux 上,一个简单的命令利用差异(几乎在每个 unix/linux 系统上都默认安装)及其-y
标志(并排比较)sed
可删除 diff 过程插入的不需要的空格/制表符。
$ diff -y 1.txt 2.txt | sed 's/\s*|\t*//g'
1.a
2.b
3.c
鉴于文件1.txt:
1.
2.
3.
和2.txt:
a
b
c
以上假设您有相同行数的文件并且每行都不同,从您的问题来看似乎就是这种情况。
答案3
使用 Vim 编辑器,例如
- 并排打开两个文件:
vim FileA.txt FileB.txt -O
。 在第一个文件中,通过按下以下按键垂直选择 2 列:
- 1,Shift- G(转到文件开头)。
- Control- V(进入视觉阻挡模式)。
- Shift- G,$(选择两列)。
- y(拉/复制到缓冲区)。
- Control通过点击: - w,转到下一个文件w。
- 确保您位于第一行:1,Shift- G。
- 在第一行,点击:Shift-P垂直粘贴。
- 保存并退出 (:wq)。
查看演示:
要对较大的文件自动执行上述步骤,可以录制宏并再次调用它,或者可以使用ex
命令(Vim 的一部分)以非交互方式编辑文件,例如,请参阅:如何以非交互方式编辑文件(例如在管道中)?
Go 可以实现类似的Sublime Text,可以使用 Vintage(Vim)插件,也可以通过垂直选择列Alt,复制并粘贴到另一个文件中。
答案4
使用库达文本具有多选功能的编辑器。
- 选择文件-1 中的所有内容
- 在文件 1 中调用“选择/将选择拆分为行”
- 选择文件-2 中的所有内容
- 在文件 2 中调用“选择/将选择拆分为行”
- 复制到文件 2 中的剪贴板(多行)
- 在 file-1 中,按 End 将插入符号置于行尾
- !! 确保文件 1 中的插入符号数等于复制到剪贴板的行数(如果末尾不需要插入符号 - Ctrl+单击即可将其删除)
- 如果它们相等,则在行尾按 Ctrl+V(粘贴)- 这会逐行粘贴剪贴板