在Linux上连接两个没有任何字段分隔符的文件



我有两个文件,其中的字段没有任何分隔符。我想在固定位置的数据上加入他们。例如:

文件1:
1234AAAAAA
1235BBBBB
1236CCCCC

文件2:
1234QQQQQ
1235RRRRR
1236TTTT
1237YYYY

输出文件:

1234AAAQQQQQ
1235BBBBBRRRRR
1236CCCCCCTTTTT

有人能给我一个解决方案吗?

让我们将文件命名为file1.txt和file2.txt。由于您提到了字段在固定位置连接,我假设第一个字段占据了每行的前4个字符,并且这些前缀在每个文件中都是唯一的。利用这一事实,我们可以首先使用cut找出两个文件中的公共前缀,对它们进行排序,然后使用uniq -c确定它们的计数。这最后通过管道传输到awk,以仅显示非唯一值,如下所示:

COMM_PREFIX=$(cut -c1-4 file[12].txt | sort | uniq -c | awk '$1 > 1 {print $2}')

使用这些前缀,从file1中过滤相应的行并存储在变量中。类似地,在file2中找到相同的模式,并从第5个字符开始存储在另一个变量中。使用两个变量形成最终输出:

for prefix in $COMM_PREFIX; do
FRONT=$(grep "^$prefix" file1.txt);
BACK=$(grep "^$prefix" file2.txt | cut -c5-);
echo "${FRONT}${BACK}";
done

最新更新