shell文件内容合并|在LINUX中如何把2个文件中的内容合到另一个文件中去

shell文件内容合并|在LINUX中如何把2个文件中的内容合到另一个文件中去的第1张示图

① linux中怎么将文件合并

方法一:使用cat命令从文件中读入两个文件,然后将重定向到一个新的文件。这种方法可以一次性合并任意多个文件。

用法示例:

将file1.txt和file2.txt合并到file.txt

$ cat file1.txt file2.txt > file.txt方法二:只使用cat命令读入一个文件,然后使用>>将文本流追加到另一个文件的末位。

用法示例:

将file1.txt追加到file2.txt的末尾

$ cat file1.txt >> file2.txt

(1)shell文件内容合并扩展阅读:

反之分割文件

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。

1、在Linux下用split进行文件分割:

模式一:指定分割后文件行数

对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。

命令:split-l300large_file.txtnew_file_prefix

模式二:指定分割后文件大小

split-b10mserver.logwaynelog

对二进制文件我们同样也可以按文件大小来分隔。

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)

② shell 如何合并文本中的各行

awk'{printf("%s",$0)}'file.txt>result.txt

直接不加换行符地打印每行,结果保存到result.txt中。

或者:

catfile.txt|xargs>result.txt

这个方法转为一行内容时中间会有空格分隔。

③ linux下两个文件想合并如何通过shell操作

写在一条命令里有点复杂哦。合并结果保存到文件3中。awk -F'*' 'NR==FNR{a[FNR]=$1;b[FNR]=$2;c=FNR}NR>FNR{flag=0;for(i=1;i<=c;i++){if($2==b[i]){print a[i] $2;flag=1;break;}}if(flag==0)print}' file2 file1 >file3思路:以 * 作为字段回分隔符,将每行记答录分割为两个字段。1. 将文件2每行记录的两个字段分别以数组形式保存下来,并记录行数。2. 对于文件1中的每一行,使用for循环与上一步记录的文件2的字段2数组对比。若相同,则打印文件2的字段1和文件1的字段2。若不同,则打印文件1中的原记录。最后的合并结果保存到文件3中。试过OK。

④ Shell 里面怎样逐行合并文件

#!/bin/shecho "输入文件行数"read linenumecho "输入文件1的文件名"read file1echo "输入文件2的文件名"read file2echo "输入合成文件的文件名"read file3i=1while(($i <= $linenum))doecho "$i $linenum"confile1=`sed -n ''$i'p' $file1`confile2=`sed -n ''$i'p' $file2`echo ${confile1}${confile2}>>$file3i=$(($i+1))doneecho "合成文件的内容如下:"cat $file3

⑤ 合并两个文件 shell命令

paste -d " " file1 file2 > file3

⑥ shell 合并文件并修改内容

先将所有文件输入到一个文件可以通过重定向

cat *.txt > new.txt

然后名字相同加序号

如果名字为第一列

awk '{a[$1]++;if(a[$1]-1==0){print $1,$2}else{print $1 a[$1]-1,$2}}' new.txt

下图为我测试的结果

如果你的文件不止2列,则需要在2个print中的$2后面添加 “,$3,$4”有几列添加到几

⑦ shell 如何合并多个文件

需求描述 现有多个具有相同命名格式及内容格式的文件,要求编写shell脚本将它们合并到一个文件中。被合并文件的命名格式为:YYYYMMDDHHMISS.r,例如:20161018030205.r;文件中包含了若干行记录,每行记录包含26个字符,其中第一个字符为标识位,第7到12个字符为时间(格式:YYMMDD),例如:000000161019002925000003N0,该记录的第一个字符0为标识位,第7到12个字符161019表示时间,即16年的10月19日;合并之后的文件的命名格式为:YYYYMMDD.txt,例如:20161018.txt。对于合并操作,具体要求为: 1)当天只合并前一天的文件,如今天(10月20日)只合并昨天(10月19日)的文件,文件时间通过文件命名即可看出。2)标识位为0的记录会被写到合并之后的文件中,其他记录将被过滤掉。3)时间(即第7到12个字符的值)为前一天的记录会被写到合并之后的文件中,其他记录将被过滤掉。shell脚本#!/bin/bashsrcparh=/home/zhou/srcexportpath=/home/zhou/exportlinenum=0return_fail(){ exit 1}function check_config_dir{ if [ ! -d ${srcparh} ];then echo "[error]:${srcparh} has not existed!!" return_fail fi if [ ! -d ${exportpath}]; then echo "[error]:${exportpath} has not existed!!" return_fail fi}function merge_file{ ##YESTERDAY DATE YYMMDD YES_DATE_YY=`date -dyesterday +%y%m%d` ##YESTERDAY filename YES_FILENAME=`date -dyesterday +%Y%m%d`.txt ONE_DAY_AGO=`date -dyesterday +%y%m%d` echo"YESTERDAY:${ONE_DAY_AGO}" echo "`date+%Y-%m-%d` `date +%T`—-begin to merge file" if [ -s ${YES_FILENAME}]; then echo "warn:yesterday file ${YES_FILENAME} has existed!! now backup it to${YES_FILENAME}_bak." mv ${YES_FILENAME}${YES_FILENAME}_bak fi cd ${srcparh} file_list_temp=`ls | grep-E "${ONE_DAY_AGO}"` file_list_count=`ls |grep -E "${ONE_DAY_AGO}" | wc -l` echo " " echo "there are${file_list_count} yesterday file(s) to be merged." echo " " >${exportpath}/${YES_FILENAME} for file_name in$file_list_temp do echo "now to merge ${file_name}" cat ${file_name} | grep "^0" >${file_name}_filter_firstline while read line do echo "" echo "nowto deal this line: ${line}" echo "" start_data=+${line:6:6}+ echo"${start_data}" | grep "+${ONE_DAY_AGO}+" if [ $? -eq 0 ] then echo"${line}" >> ${exportpath}/${YES_FILENAME} linenum=$[linenum+1] fi done <${file_name}_filter_firstline rm*_filter_firstline done if [ ${linenum} -gt 0 ] then echo "Totally ${linenum} lines havemerged." fi if [ ! -s${exportpath}/${YES_FILENAME} ] then echo "warn:there is no yesterday file record!!,${exportpath}/${YES_FILENAME} isblank!" echo " ">${exportpath}/${YES_FILENAME} fi } main(){ echo " " echo "this mergetool begins running ——————–" check_config_dir; merge_file; echo"————-end ———————"}## Execute main functionmain $*576576脚本说明 第一,在脚本的第3到5行,定义了三个变量,其中srcparh用于存放被合并的文件,exportpath用于存放合并之后的文件,linenum用于表示本次写到合并之后的文件中的记录的条数。第二,return_fail用于在执行出现异常(如srcparh或exportpath所表示的路径不存在)时退出程序而不进行后续处理。第三,check_config_dir函数用于检查srcparh或exportpath所表示的路径是否存在,如不存在,则不进行后续处理。第四,merge_file函数是本脚本的核心,它的主要功能是找出srcparh下满足时间条件的文件,并按照需求要求将文件中的记录筛选出来,放到结果文件中。如果有满足条件的记录,那么脚本会显示写入到结果文件中的记录的条数。第五,main函数是整个程序的入口(就像C语言中的main函数一样),它调用了check_config_dir和merge_file函数。脚本执行结果 第一,当srcparh所表示的路径不存在时,执行结果如下:> ./file_merge_tool.shthis merge tool begins running ——————–[error]: /home/zhou/src has not existed!!12341234第二,当exportpath所表示的路径不存在时,执行结果如下:> ./file_merge_tool.shthis merge tool begins running ——————–[error]: /home/zhou/export has not existed!!12341234第三,当srcparh所表示的路径存在但不包含任何文件时,执行结果如下:> ./file_merge_tool.shthis merge tool begins running ——————–YESTERDAY:1610192016-10-20 16:30:06—-begin to merge filethere are 0 yesterday file(s) to be merged.warn: there is no yesterday filerecord!!,/home/zhou/export/20161019.txt is blank!————-end ———————1234567891012345678910第四,现有四个文件20161018030205.r、20161019030254.r、20161019182531.r、20161019213456.r,每个文件的内容如下: 20161018030205.r文件:000000161019002925000003N0 000000161019002931000003N0 300000161018002931000003N0 000000161019002926000009Y0 000000161019003150000003N020161019030254.r文件:000000161019004925000003N0 000000161019006931000003N0 100000161019006971000004N0 000000161019007926000009Y0 200000161019006871000004N0 000000161019008150000003N020161019182531.r文件:000000161019001925000003N0 000000161019004931000003N0 000000161018007926000009Y0 000000161019007926000009Y0 000000161019009150000003N0 000000161017007926000009Y0 600000161019007426000009Y020161019213456.r文件:000000161019002925000003N0 000000161019002931000003N0 000000161019002926000009Y0 800000161019002961000003N0 000000161019003150000003N0将它们上传到srcparh目录下,运行脚本,结果如下:> ./file_merge_tool.shthis merge tool begins running ——————–YESTERDAY:1610192016-10-20 17:08:24—-begin to merge filethere are 3 yesterday file(s) to be merged.now to merge 20161019030254.rnow to deal this line: 000000161019004925000003N0+161019+now to deal this line: 000000161019006931000003N0+161019+now to deal this line: 000000161019007926000009Y0+161019+now to deal this line: 000000161019008150000003N0+161019+now to merge 20161019182531.rnow to deal this line: 000000161019001925000003N0+161019+now to deal this line: 000000161019004931000003N0+161019+now to deal this line: 000000161018007926000009Y0now to deal this line: 000000161019007926000009Y0+161019+now to deal this line: 000000161019009150000003N0+161019+now to deal this line: 000000161017007926000009Y0now to merge 20161019213456.rnow to deal this line: 000000161019002925000003N0+161019+now to deal this line: 000000161019002931000003N0+161019+now to deal this line: 000000161019002926000009Y0+161019+now to deal this line: 000000161019003150000003N0+161019+Totally 12 lines have merged.————-end ———————对照被合并的文件和结果文件,一共有4个文件,但只有3个文件(20161019030254.r、20161019182531.r、20161019213456.r)满足时间条件,这3个文件中满足过滤条件(标识位为0、时间为前一天)的记录条数为12条,和脚本执行结果一致。大家也可对本脚本进行更多的测试。总结 shell脚本在基于Linux的开发中有极为广泛的应用,因为它靠近底层,执行效率高、部署方便。本文中的脚本也可以作为定时任务部署到机器上,让它在每天的同一个时间里自动执行。

⑧ 在LINUX中如何把2个文件中的内容合到另一个文件中去

1、首先,抄连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。

⑨ 如何用shell实现从一个文件中读取各个文件的名字,然后把各个文件用cat合并为一个文件

文件系统操作命令: 1。猫:可以显示文件的内容(更经常同用),或将多个文件合并成一个文件。 2 chgrp命令:用于改变文件或目录所属的用户组,参数命令更改文件的属组,文件名支持通配符空格分隔的列表,如果用户是不是车主该文件的,你不能改变所属组的文件。 3 CHMOD:对文件或目录,有两种方式命令更改访问权限:一种是用图解法,另一种是数字设定法。 4乔敦:用于指定用户或组特定所有者。用户可以设置一个用户名或用户ID,组可能是一个组名或组ID。具体的文件是文件权限空格分隔的列表是可以改变的,文件名支持通配符。 五明确:清除终端屏幕。 6的cmp:用来比较两个文件的大小。 7 CP:(复印件),你可以在同一个功能非常强大的文件或目录复制到另一个目录中,就如同DOS复制命令。当使用cp命令,你只需要指定源文件名或目标目录。 8剪:用来清除文件的部分内容。 9差异:找出两个文件之间的差异。 10杜:显示盘的剩余空间的大小。 11文件:用来显示文件的类型。 12发现:用于搜索目录中的文件并执行指定的操作。 13头:看到文件的内容只有前几行,而不必浏览整个文件。 14号法律公告:您可以创建文档之间的链接,事实上,在参观了它的别名指定的文件。 15减:用法和比较类似,您可以查看文件的内容超过一屏,不同的是少,除了按下空格键可显示的文件,你可以使用箭头键滚动浏览该文件,浏览到结束,只要少提示“:”请按Q键即可。 16定位:可用于查找文件,而且比find命令的搜索速度更快。 17 LS(列表):用于显示当前目录中的文件和子目录列表。 18的mkdir(创建目录):创建子目录。 19多个:不止一个屏幕用于显示一个文件的内容,以避免文件的内容显示瞬间消失后,你可以使用更多的命令,这样的文件全屏显示时,暂停,继续显示下一次你按任意键屏幕内容。 20 rmkdir(删除目录):删除“空”的子目录或无用的目录文件。 21 MV(移动):文件和目录可以被移动到另一个位置,或者改变文件和目录的名称。 22微微:指定可编辑的文本。 23 PWD(打印工作目录):显示目录中的用户的当前位置。 24 RM:删除系统中过时或无用的文件,可以删除目录或目录本身的文件,链接文件,原文件保持不变。 25排序:文本文件自动分类。 26统计:为状态显示文件或文件系统。 27字符串:显示字符串的文件进行打印。 28尾:输出文件的结尾。 29摸:改变文件的时间戳。 30的umask:用来启动bash shell的。 31的uniq:删除重复的机密文件的文本行。 32六:启动vi文本编辑器。 33 WC:显示文本行字的组合文件中的字节,数。 34 whereis:查找在原程序中的特定目录,二进制程序或用户手册和其他文件。 35人:如果用户想了解某个命令的详细信息,那么你可以使用此命令。 36日:复制文件。 37,DF:查看文件系统的磁盘空间使用情况。 38 edquoat:设置用户和磁盘空间的限制,即Windows系统的配额组。 39 fdformat:格式化的软盘。 40 FDISK:在Linux下进行磁盘分区。 41的mkfs:建立一个Linux的文件系统。 42 mkswap命令:创建一个Linux swap分区。 43安装:安装文件系统。 44名额:限和显示用户可用的磁盘空间。 45 swapon命令,使用swapoff:启用或禁用设备交换页面和文档。 46使用quotaon,quotaoff:启用或禁用配额限制。 47的umount:取消文件系统设备。 系统管理命令 1手指:查询用户信息,也可以查看默认的用户环境。 2 FTP:用户界面标准的文件传输协议在网络上传输文件是最简单有效的方法。 3主机:DNS查询。 4主机:用于显示或设置系统的主机名。 5 ifconfig命令:用于配置网络接口。 (您可以启用或禁用使用向下或向上的参数网络接口) 6,邮件:发送和接收邮件。 7的netstat:显示网络连接,路由表和网络接口的信息,用户可以知道,网络连接正在运行。 8平:该命令用于在网络上连接到计算机,并检查其他计算机。 9远程登录:远程登录命令,该命令与telnet命令很相似,该系统允许用户启动远程交互式会话的用户。 10 RCP:RCP(远程文件复制)命令是一个远程文件拷贝命令,它被用来计算机之间复制文件,有两种格式,用于移动到复制文件的文件格式,另一种用到一个文件或目录复制到另一个文件目录。 11路:该命令用于显示或设置IP路由表。 12 tcpmp的:这个命令是用来测试网络流量。 13快讯:此命令可用于网络用户及时对话事宜,但信息必须被添加到每个系统的/ etc / hosts文件来识别对方当事人。 14的Telnet:该命令用于登录远程计算机通过网络,为本地计算机的操作。 15,墙面:墙面(全部写入)命令可以用来将消息发送到本机的用户登陆。发送邮件时,您可以输入直接发送消息,也可以将文档作为邮件发送。 16的wget:此命令用于从互联网上下载的环境下Linux的文件,HTTP和FTP协议的支持,支持代理服务器,打破了连续传输功能,在远程主机上的递归目录,找到称心如意的文件和下载到本地硬盘。 wget命令可以在后台运行,截获并忽略hantfup信号,所以用户退出登陆后,可以继续运行。 17&,BG:&,执行bg命令背景命令,有时由用户执行该程序可能要说了大量的时间,如果放置在前景中,可能不能够继续其他操作,它最好是他的背景。 18 FG:fg命令在前台执行的命令,如果你有在后台运行的程序,你可以通过移动fg命令来从后台前台执行该程序。 19职位:该命令用于显示在后台执行的任务列表。 BG,FG,乔布斯命令属于bash命令,二手20杀:此命令用于终止一个程序,例如:#[根@ rathat9根]杀3793 21 PS:此命令用来显示程序的状态。 22顶:该命令用于显示当前CPU的过程。 23在批ATP ATRM:进行排序,检查或删除后台运行的任务,这些命令。命令 的Linux用户相关: 1 passwd命令:更改用户密码。 格式命令:passwd [用户名] 2 su命令:你可以拥有超级用户权限,或者其他用户普通用户,也可以让超级支持,以一个普通用户做一些事情。 格式:苏[选项] [用户帐户] 说明[?]:如果不指定的用户帐户,系统默认的是超级用户root。的命令选项的含义分别为: -c:结束后执行的命令。 – :加减这个目的是使环境变量和要转换的同一个用户。 -m:保留的环境变量不变。

未经允许不得转载:山九号 » shell文件内容合并|在LINUX中如何把2个文件中的内容合到另一个文件中去

赞 (0)