场景:
第一种:
文件A内容如下:
a
b
c
d
e
文件B内容如下:
1
2
3
4
5
需要生成文件如下:
a-1
b-2
c-3
d-4
e-5
首先创建文件ab,内容为要合并的文件名,如下:
A
B
代码如下:
LE=$(sed -n '$=' ./ab) //获取ab的行数
for((j=1;j<2;j++)); //此处for循环适用于合并多个文件,单数是源文件名,双数的目标文件名
do
SRC=$(sed -n "${j}p" ./ab) //获取指定行的内容
TGT=$(sed -n "$[$j+1]p" ./ab)
LEN=$(sed -n '$=' ./${SRC})
for((i=1;i<$LEN+1;i++));
do
VAL=$(sed -n "${i}p" ./${SRC})
VAL1=$(sed -n "${i}p" ./${TGT})
echo $VAL"-"$VAL1 >> ./out/${SRC};
done
done
第二种:(假设a和b在一个文件夹中)
读取../out下的文件夹名称,存储为文件夹名称列表
rm -f ./name
for NAME in $(dir ../out);
do
echo $NAME >>name;
done
读取的文件夹名称列表,访问该文件夹路径,对该文件夹下的文件进行合并(注意,合并的文件行应该相同)
for FN in $(cat name);
do
echo $FN
cd ../out/$FN
paste -d'|' * >> ../../batch/out/$FN
cd ../../batch
done
PS:>>表示写文件追加