方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件。这种方法可以一次性合并任意多个文件。
用法示例:
将file1.txt和file2.txt合并到file.txt
$ cat file1.txt file2.txt >file.txt
方法二:只使用cat命令读入一个文件,然后使用>>将文本流追加到另一个文件的末位。
用法示例:
将file1.txt追加到file2.txt的末尾
$ cat file1.txt >>file2.txt
扩展资料:反之分割文件
linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。
1、在Linux下用split进行文件分割:
模式一:指定分割后文件行数
对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。
命令:split -l 300 large_file.txt new_file_prefix
模式二:指定分割后文件大小
split -b 10m server.log waynelog
对二进制文件我们同样也可以按文件大小来分隔。
2、将一个大文件分成若干个小文件方法
例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式
先利用wc -l BLM.txt
读出 BLM.txt 文件一共有多少行
再利用 split 命令
split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_
将文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)
while [ 1 -eq 1 ]##无限循环直到所有文件相同的文件合并成功do
i=0 ##使用数组应该好一些
j=0
for a in $(ls /xxx/xxx/*)
do
b[$i]=$a##获取的所有文件赋予给数组
let i=i+1
done
while [ j -ln ${#b[@] ] ##文件有多个次,循环多少次,拿文件比较
do
for c in $(awk 'for(i=1i<=4i++){printf $i}' ${b[$j]}) ##文件里面有多少数据,循环多少次
do
let d=j+1
e=`cat ${b[$d]}|grep $c` ##拿第一个文件与后面一个文件比是否存有相同的数
if [ $e -eq 1 ]
then
sort -u ${b[$j]} ${b[$d]} >$j.txt ##如果有重复的就合并到文件,没有继续与第3个文件比较
break ##然后终止循环,为什么要终止循环?因为合并的文件还有可能与后面的文件重## 复数字,故退出循环,进入大的循环再获取新的文件比较
else if [ j -eq $(${#b[@]-1) ] ##如果比到倒数第二个文件和最后一个文件没有没有相似点则退出程序,##比较完毕
exit
fi
done
then
exit
fi
done
done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)