Shell中同时读多个文件

本文介绍如何使用Shell脚本进行文件的分割与合并操作。通过示例展示了如何从一个原始文件中提取特定列并保存到新文件,以及如何将多个文件按列合并成一个多列文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(转载自:http://blog.youkuaiyun.com/redraiment/article/details/4476191?reload)

一个文件分割成多个文件

有时需要提取文件中的一个或多个列元素生成新的文件,这一操作在 Shell 里很容易实现。比如有一个数据文件 data,有三列信息:姓名、学号、班级。

redraiment 0612800134 0601
christine 0612800136 0601
zb 0612800229 0602

现在需要这个文件的第一列和第二列信息分别存到文件 f1f2 中,可以用 awk 提取,也可以用下面这个简单 shell 程序:

#!/bin/sh

while read f1 f2 f3
do
    echo $f1 >> f1
    echo $f2 >> f2
done

多个文件合并成一个文件

如果想把多个文件重新合并成一个多列文件,而不是追加到文件尾处。例如把上列中生成的 f1 f2 重新组成 join.txt 。这时需要同时操作多个文件,就像 C 语言中用 fopen 同时打开多个文件,在 shell 里也是类似的。只是在 shell 里叫做“文件描述符”,用“0-9”十个数字表示。其中 0、1、2 分别是系统的标准输入、输出、错误。“3-9”则由用户只有使用。我们就可以任选两个来重定向输入。脚本如下:

#!/bin/sh

exec 3<f1
exec 4<f2
while read f1 <&3 && read f2 <&4
do
    echo $f1 $f2 >> join.txt
done 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值