Linux将多个文件内容我的世界合成方法一个的方法

相关文章随机文章
本站推荐 阅读 121 &26 阅读 161 &42 阅读 2,342 &98 阅读 2,462 &39 阅读 350 &0热门文章1234567891011121314151617181920最新文章
<!-- super cacheIBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
在我们有关 GNU 文本实用程序的连续系列中,Jacek Artymiak 对 cat 做了一下研究 — cat 这个命令是 UNIX 爱好者所热爱的,也是厌恶 UNIX 的人所憎恶的。
(), 自由顾问、开发人员和作家
Jacek Artymiak 是一位自由顾问、开发人员和作家。自从 1991 年他就一直为许多商业性和免费的 UNIX
和 BSD 操作系统的变体(AIX、HP-UX、IRIX、Solaris、Linux、FreeBSD、NetBSD、OpenBSD
和其它操作系统)和 MS-DOS、Microsoft Windows、Mac OS 与 Mac OS X 等开发软件。Jacek
擅长商业和金融应用程序开发、Web 设计、网络安全、计算机图形、动画和多媒体。在技术主题方面,他是一位多产的作家,并与他人一同合著了“Install,
Configure, and Customize Slackware Linux”(Prima Tech,2000)和“StarOffice for Linux Bible”(IDG
Books,2000)。在
上可以找到许多 Jacek 的软件项目。可以从他的
更多地了解他,可以通过
与他联系。
您常常需要将几个文件处理成一个文件并将这种处理的结果保存到一个单独的输出文件。
cat (“concatenate”的缩写)命令在其输入上接受一个或多个文件并将它们作为一个单独的文件打印到它的输出。例如,
cat chapter01 chapter02 chapter03 & book 将三个
chapterXX 文件保存在一个单独的
book 文件中。
输入文件按照它们在
cat 命令后的排列顺序被打印,因此,要调换信息的顺序,就必须先调换输入文件的顺序。此外,当需要处理的文件数目对于您来说过大而无法手工输入这些文件的名称
时,您可以使用通配符,如在
cat chapter* &
book 中使用的那样,记住,文件名将会按升序排列。当您突然发现
chapter13 被发送到输出中时会在
chapter2之前,而会在
chapter02之后时,这会引起很有意思的问题。
cat 的输出没有被重定向到一个文件或另一个命令的标准输出时,
cat 表现出来的行为与多数命令行工具一样,即将其输出发送到控制台。
这意味着您可以使用
cat 来显示文件;例如,您可以使用
cat /etc/passwd 来显示系统密码文件的内容。为方便起见,您应该用
查看大文件,如在
less /etc/passwd 中那样(您可以通过输入
man less 学习更多关于
less 的知识)。
cat 主要用于合并文件,您还可以将它用于输入的简单自动处理。例如,您可以使用
一个单独的空白行来除去多行空白行(使用
-s 选项),这是一个在您将源代码公诸于世前进行清除工作的好办法。遗憾的是,
cat 并没有用于一次清除所有空白行的选项。但这并不是什么大问题,因为您
可以使用方便的
sed 命令将这些空白行除去:
清单 1. 使用 sed 与 cat 除去空白行$ cat -s /etc/X11/XF86Config | sed '/^[[:space:]]*$/d'
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
"/usr/X11R6/lib/X11/fonts/TrueType"
"unix/:7100"
EndSection
...对于读取配置文件和 HTML 页面的源文件,特别是那些由脚本生成的插入了不必要新行的源文件,以及那些包含大型条件结构(其各个项之间已经用空行分开)的源文件来说,空白行紧缩是一个方便的技巧。
cat 的另外一个重要的功能是它可以对行进行编号。这种功能对于程序文档的
编制以及法律和科学文档的编制很方便。打印在左边的行号使得参考文档的某一部分变得容易。这在编程、科学研究、业务报告或甚至是立法工作中都是非常重要的。
对行进行编号功能有两个选项:
-b 选项(只能对非空白行进行编号)和
-n 选项(可以对所有行进行编号):
清单 2. 对行进行编号$ cat -b /etc/X11/XF86Config
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
"/usr/X11R6/lib/X11/fonts/TrueType"
"unix/:7100"
EndSection
$ cat -n /etc/X11/XF86Config
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
"/usr/X11R6/lib/X11/fonts/TrueType"
"unix/:7100"
EndSection
...cat 还可以在您查看包含如制表符这样的非打印字符的文件时起帮助作用。
您可以用以下选项来显示制表符:
-T 将制表符显示为
^I-v 显示非打印字符,除了换行符和制表符,它们使用各自效果相当的“控制序列”。
例如,当您处理一个在 Windows 系统中生成的文件时,这个文件将使用 Control-M(
^M )来标记行的结束。对于代码大于 127 的字符,它们的前面将会被加上
M- (表示“meta”),这与其它系统中在字符前面加上
Alt- 相当。
-E 在每一行的结束处添加美元符(
清单 3. 显示非打印字符$ cat -t /etc/X11/XF86Config
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
^IFontPath^I"/usr/X11R6/lib/X11/fonts/TrueType"
^IFontPath^I"unix/:7100"
EndSection
$ cat -E /etc/X11/XF86Config
# Multiple FontPath entries are allowed (they are concatenated together)$
# By default, Red Hat 6.0 and later now use a font server independent of$
# the X server to render fonts.$
"/usr/X11R6/lib/X11/fonts/TrueType"$
"unix/:7100"$
EndSection$
$ cat -v /etc/X11/XF86Config
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@M-|M-8^X^@^@^@
P^@^O"M-X^O M-@^M^@^@^@M-^@^O"M-@M-k^@M-8*^@
@M-^H$M-@M-9|A(M-@)M-yM-|M-sM-*M-hW^A^@^@j^@
M-|M-sM-%1M-@M-9^@^B^@^@M-sM-+fM-^A= ^@ ^@
^@M-9^@^H^@^@M-sM-$M-G^E(l!M-@M-^?
^IM-A5^@^@^D^@PM-^]M-^\X1M-H%^@^@^D^@tyM-G
...下回我们将看一下
tail 。到时候见!同时,如果您有什么问题或评论,我会乐于收到您的来信 — 您可以发电子邮件至
参考资料 您可以参阅本文在 developerWorks 全球站点上的
本系列中对文本实用程序的介绍对手册页和信息页中的信息是一个补充。要学习更多关于这方面的知识,请打开一个新的终端窗口并输入
info cat — 或者您可以打开一个新的浏览器窗口并
您还可以参阅
。了解为什么
cat 被认为既是优秀的用户界面设计的示例,又是拙劣的用户界面设计的典型示例。
(位于 MIT 的
,在 MIT,您还可以找到
)找到关于我们了解并喜欢的这些工具(它们都是文本实用程序)的更多信息。
Windows 用户可以在
软件包中找到这些工具。
Mac OS X 用户可能想尝试
,它在 Mac OS X 下安装丰富的 UNIX 环境。
您碰到了一些问题?请查阅
在钻研我们这里讲述的工具之前还需要更多介绍性的信息?您可以尝试从
或者尝试本系列的介绍性文章“
developerWorks,2002 年 10 月)。
这一领域的经典著作是
,Jerry Peek、Tim O'Reilly 和 Mike Loukides 著(O'Reilly and Associates,1997);ISBN 1-。
查找您正在寻找的 Linux 参考资料。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=LinuxArticleID=20709ArticleTitle=技巧: 用 cat 合并文件publish-date=Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字_百度知道
Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字
则 file1和file2通过4合并到一起然后再通过9与file3合并到一起;
file3 里的文字是 11 73 24 9Linux下怎么合并一个文件夹下的所有文件,最终是2个文件,file3合并的一起形成的大文件(去重),比如 文件 file1 里的文字是 1 3 4 9,当然这个大文件要起个名字,不停地循环,file2,规则就是 只要任意两个文件含有一个相同的数字; 文件 file2 里的文字是 12 34 4 91,直到剩下的文件任意两个都没有重复的数字,名字没有具体要求另一个就是file4 怎么用linux实现一下啊; file4 里的文字是 632 99,file4 因为与其他文件没有交叉的数字所以不合并:一个文件为file1,则合并
提问者采纳
进入大的循环再获取新的文件比较else if [ j -eq $(${#b[@]-1) ]
##如果比到倒数第二个文件和最后一个文件没有没有相似点则退出程序,
##比较完毕for(i=1;=4;i++){printf $i}&#39; ${b[$j]})
##文件里面有多少数据,循环多少次;i&lt.txt
##如果有重复的就合并到文件,没有继续与第3个文件比较 $j,故退出循环,为什么要终止循环?因为合并的文件还有可能与后面的文件重
## 复数字,循环多少次dolet d=j+1e=`cat ${b[$d]}|grep $c`
##拿第一个文件与后面一个文件比是否存有相同的数if [ $e -eq 1 ]thensort -u
${b[$j]} ${b[$d]} &xxx/
##然后终止循环,拿文件比较dofor c in $(awk &#39;xxx/*)
dob[$i]=$a
##获取的所有文件赋予给数组let i=i+1donewhile [ j -ln ${#b[@] ]
##文件有多个次while [ 1 -eq 1 ]
##无限循环直到所有文件相同的文件合并成功doi=0
##使用数组应该好一些j=0for a in $(ls &#47
提问者评价
非常感谢,太热心了!谢谢
其他类似问题
为您推荐:
文件夹的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 4320|回复: 17
多个excel文件如何快速合并到一个excel中
阅读权限20
在线时间 小时
本帖最后由 槿缇 于
15:54 编辑
现在有很多个excel文件,表头都是一致的
但是数据数量不一致
需要汇总到一个excel文件中进行分析
我还需要在汇总的前面添加一列
显示获取数据文档的名称,好区分哪些数据是来源哪里的
我现在用的方法是复制黏贴,但是表格是在太多,所以想找一个更加适用的方法
09:39 上传
点击文件名下载附件
34.76 KB, 下载次数: 151
阅读权限70
在线时间 小时
'汇总各工作簿数据到汇总表中
Sub 汇总多工作簿()
& & Dim r As Long, c As Long, str As String, sht As Worksheet
& &
& & '定义r,c为长整型
& & r = 2
& & '赋值r初值为2
& & Application.ScreenUpdating = False& & '屏幕闪烁关闭
& & Dim filename As String, wb As Workbook, Erow As Long
& & '定义filename 为文本型,wb 为 工作簿,sht为工作表,Erow 为长整型
& & Dim fn As String, Arr As Variant
& & 'on error resume next
& & On Error GoTo VeryEnd
& & '程序中出现语句等运行错误时,程序跳跃到后面&&VeryEnd行
& & filename = Dir(ThisWorkbook.Path & &\*.xlsx&)& & '对文件夹内的工作簿进行循环,循环查找的格式&&*.xls
& & ' MsgBox filename
& & Do While filename && &&
& && &&&'对文件夹内的工作簿进行循环,截止到最后一个工作簿
& && &&&If filename && ThisWorkbook.Name Then
& && &&&'判断文件是否是本工作簿
& && &&&'else
& && && && &'&&Erow = Range(&A1&).End(xlDown).Row& &'取得汇总表中第一条空行行号
& && && && &'&&MsgBox &erow=& & Erow
& && && && &fn = ThisWorkbook.Path & &\& & filename& & '取得循环符合条件工作簿的&&文件夹地址,赋值给fn 这个变量
& && && && &' MsgBox &现在汇总的工作簿是fn= & & fn
& && && && &Set wb = GetObject(fn)
& && && && &'将fn代表的工作簿对象赋给变量
& && && && &Set sht = wb.Worksheets(1)
& && && && &'range,cells
& && && && &'汇总的是第1张工作表
& && && && &Arr = sht.Range(&a2:m& & sht.Range(&a2&).End(xlDown).Row)& && && && &'将结果存放在定义好的数组arr中
& && && && &c = UBound(Arr, 1)
& && && && &' MsgBox &现在汇总的工作簿行数= & & c
& && && && &'将数组arr中的数据写入工作表
& && && && &Range(&a& & r).Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr& && && &&&'将目标结果存放在目标工作表中特定的区域
& && && && &r = r + c
& && && && &'&&MsgBox &现在汇总到的行数是:& & r
& && && && &wb.Close False
& && &&&End If
& && &&&filename = Dir& && &'进行下一步的循环
& & Loop
VeryEnd:
& & Application.ScreenUpdating = True
& & '屏幕闪烁打开
End Sub复制代码
阅读权限70
在线时间 小时
请查看附件。
(390.58 KB, 下载次数: 279)
10:21 上传
点击文件名下载附件
阅读权限20
在线时间 小时
TomingTang 发表于
请查看附件。
谢谢大师,
对我而言 有点复杂, 我先研究研究&&
阅读权限20
在线时间 小时
TomingTang 发表于
请查看附件。
不好意思,还有一点我开始没说明白
我还需要在汇总的前面添加一列
显示获取数据文档的名称,好区分哪些数据是来源哪里的
给您添麻烦了&&
阅读权限70
在线时间 小时
& & & & & & & &
槿缇 发表于
不好意思,还有一点我开始没说明白
我还需要在汇总的前面添加一列
显示获取数据文档的名称,好区分哪些 ...'汇总各工作簿数据到汇总表中
Sub 汇总多工作簿()
& & Dim r As Long, c As Long, str As String, sht As Worksheet, brr(1 To 1000, 1 To 1)
& &
& & '定义r,c为长整型
& & r = 2
& & '赋值r初值为2
& & Application.ScreenUpdating = False& & '屏幕闪烁关闭
& & Dim filename As String, wb As Workbook, Erow As Long
& & '定义filename 为文本型,wb 为 工作簿,sht为工作表,Erow 为长整型
& & Dim fn As String, Arr As Variant
& & 'on error resume next
& & On Error GoTo VeryEnd
& & '程序中出现语句等运行错误时,程序跳跃到后面&&VeryEnd行
& & filename = Dir(ThisWorkbook.Path & &\*.xlsx&)& & '对文件夹内的工作簿进行循环,循环查找的格式&&*.xls
& & ' MsgBox filename
& & Do While filename && &&
& && &&&'对文件夹内的工作簿进行循环,截止到最后一个工作簿
& && &&&If filename && ThisWorkbook.Name Then
& && &&&'判断文件是否是本工作簿
& && &&&'else
& && && && &'&&Erow = Range(&A1&).End(xlDown).Row& &'取得汇总表中第一条空行行号
& && && && &'&&MsgBox &erow=& & Erow
& && && && &fn = ThisWorkbook.Path & &\& & filename& & '取得循环符合条件工作簿的&&文件夹地址,赋值给fn 这个变量
& && && && &' MsgBox &现在汇总的工作簿是fn= & & fn
& && && && &Set wb = GetObject(fn)
& && && && &'将fn代表的工作簿对象赋给变量
& && && && &Set sht = wb.Worksheets(1)
& && && && &'range,cells
& && && && &'汇总的是第1张工作表
& && && && &
& && && && &Arr = sht.Range(&a2:m& & sht.Range(&a2&).End(xlDown).Row)& && && && &'将结果存放在定义好的数组arr中
& && && && &c = UBound(Arr, 1)
& && && && &For i = 1 To c
& && && && && & brr(i, 1) = filename
& && && && &Next
& && && && &' MsgBox &现在汇总的工作簿行数= & & c
& && && && &'将数组arr中的数据写入工作表
& && && && &Range(&b& & r).Resize(UBound(Arr, 1), UBound(Arr, 2)) = Arr& && && &&&'将目标结果存放在目标工作表中特定的区域
& && && && &&&Range(&a& & r).Resize(UBound(Arr, 1), 1) = brr
& && && && &&&Erase brr
& && && && &r = r + c
& && && && &'&&MsgBox &现在汇总到的行数是:& & r
& && && && &wb.Close False
& && &&&End If
& && &&&filename = Dir& && &'进行下一步的循环
& & Loop
VeryEnd:
& & Application.ScreenUpdating = True
& & '屏幕闪烁打开
End Sub复制代码
阅读权限70
在线时间 小时
请查看附件。
18:36 上传
点击文件名下载附件
398.57 KB, 下载次数: 252
阅读权限20
在线时间 小时
TomingTang 发表于
请查看附件。
谢谢你&&解决了 我的大难题& &
阅读权限20
在线时间 小时
请查看附件。
老师,太好了,您的例子有通用性,我公司遇到的问题也能解决,太好了
但是我使用中遇到一个问题,如果被合并的文件的行数超过1000行,就无法合并到汇总表里,同时导致后面的被合并表都无法合并了。
比方说,同一文件夹里有ZB01.xls(300行),ZB02.xls(190行),ZB03.xls(1500行),ZB04.xls(400行)
我执行宏后汇总表里只汇总ZB01和ZB02,ZB03由于超过1000行导致无法写入汇总表,同时ZB04也无法写入。
请问老师这个怎么解决呢?谢谢
阅读权限20
在线时间 小时
老师,太好了,您的例子有通用性,我公司遇到的问题也能解决,太好了
但是我使用中遇到一个问题,如果被 ...
解决了,我看到了,这里改了一下就好
Dim r As Long, c As Long, str As String, sht As Worksheet, brr(1 To 5000, 1 To 1)
还是谢谢老师,这个代码太有用了
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID428765空间积分0 积分633阅读权限20帖子精华可用积分633 信誉积分166 专家积分0 在线时间889 小时注册时间最后登录
丰衣足食, 积分 633, 距离下一级还需 367 积分
帖子主题精华可用积分633 信誉积分166 专家积分0 在线时间889 小时注册时间最后登录
论坛徽章:0
如题,一个目录下有一百多个文本文件,文件名也毫无规律性。现在如何将这一百多个文件的内容合并成一个文件?如果一个一个cat的话,工作量也不小。
awk '{ print FILENAME,$0 }' file1 file2 file3&fileall 这个方法也可以,不过就是依次输入一百多个文件名太累了。
哪位大虾能不能给支个招儿,小弟不胜感激~!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID8213186空间积分1 积分14041阅读权限90帖子精华可用积分14041 信誉积分2595 专家积分369 在线时间8527 小时注册时间最后登录
大富大贵, 积分 14041, 距离下一级还需 5959 积分
帖子主题精华可用积分14041 信誉积分2595 专家积分369 在线时间8527 小时注册时间最后登录
论坛徽章:4
cat *.txt & newfile
LIVE FREE OR DIE!& &&&K.I.S.S.&&DRY
远离& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&shell
UID2292276空间积分2 积分17275阅读权限90帖子精华可用积分17275 信誉积分2735 专家积分625 在线时间9448 小时注册时间最后登录
大富大贵, 积分 17275, 距离下一级还需 2725 积分
帖子主题精华可用积分17275 信誉积分2735 专家积分625 在线时间9448 小时注册时间最后登录
论坛徽章:5
for FILE in *
& & cat $FILE && newfile && rm -f ${FILE}
有时候回答问题是信口开河......
因此不保证所有回复问题的答案的准确性.
如果正好是对的,那是碰到了死耗子..呵呵.
想着休息,不想做事!
UID428765空间积分0 积分633阅读权限20帖子精华可用积分633 信誉积分166 专家积分0 在线时间889 小时注册时间最后登录
丰衣足食, 积分 633, 距离下一级还需 367 积分
帖子主题精华可用积分633 信誉积分166 专家积分0 在线时间889 小时注册时间最后登录
论坛徽章:0
谢谢各位~!
UID空间积分0 积分76阅读权限10帖子精华可用积分76 信誉积分53 专家积分0 在线时间27 小时注册时间最后登录
白手起家, 积分 76, 距离下一级还需 124 积分
帖子主题精华可用积分76 信誉积分53 专家积分0 在线时间27 小时注册时间最后登录
论坛徽章:1
谢谢各位,学习啦!
UID空间积分0 积分30阅读权限10帖子精华可用积分30 信誉积分72 专家积分0 在线时间52 小时注册时间最后登录
白手起家, 积分 30, 距离下一级还需 170 积分
帖子主题精华可用积分30 信誉积分72 专家积分0 在线时间52 小时注册时间最后登录
论坛徽章:0
find /tmp/* -exec cat && file2.txt {}&&\;

我要回帖

更多关于 linux 语音合成 的文章

 

随机推荐