我是 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 ' '
获取空格)