将一个文件的部分内容添加到另一个文件

将一个文件的部分内容添加到另一个文件

我是 Linux 新手,正在做一些 opencv 的东西。

我有一个文件,positives.txt其中包含 1400 张图片的名称和坐标,如下所示:

./positives/1.jpg 1 9 25 70 21
./positives/2.jpg 1 13 5 45 38
./positives/3.jpg 1 8 20 63 14
./positives/4.jpg 2 4 25 76 23 11 17 67 21

...ETC

另一个文件samples.txt如下:

./positives/800.jpg 
./positives/801.jpg 
./positives/802.jpg 
./positives/803.jpg 

...ETC

我想编写一个 bash 脚本,将所有数字从一个文件复制positives.txt到另一个文件samples.txt。因此输出将如下所示

./positives/800.jpg 1 9 25 70 21
./positives/801.jpg 1 13 5 45 38
./positives/802.jpg 1 8 20 63 14
./positives/803.jpg 2 4 25 76 23 11 17 67 21

...ETC

我怎样才能做到这一点?

答案1

在您的样本上

$ cut -d ' ' -f2- positives.txt | paste -d '' samples.txt -
./positives/800.jpg 1 9 25 70 21
./positives/801.jpg 1 13 5 45 38
./positives/802.jpg 1 8 20 63 14
./positives/803.jpg 2 4 25 76 23 11 17 67 21

这假设文件已经排序,并且第一行positives包含要添加到第一行的数字samples

笔记

  • cut -d ' ' -f2-从第二个字段开始剪切positives所有字段,假设它是空格分隔的
  • |cut输出作为 stdin 传递给paste
  • paste -d '' samples.txt -将 stdin 中的行粘贴到 中的行上,samples而不添加任何分隔符(此处输入的文件在每行末尾都有一个空格。如果不是这种情况,请使用paste -d ' '获取空格)

相关内容