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