本文从零实现Linux指令系列文章,其他系列文章:
从头实现Linux指令(三)paste-用于数据处理的简单小命令
paste
paste
命令是linux上一个数据处理的小工具,可以把多个文件中的每一行一一对应粘贴为一个新行。这样的操作类似于用python+pandas
做数据处理。具体的命令及效果如下:
假设state
文件储存印度的州和相应的首都,我们可以通过paste命令将他们一一对应起来,文件内容如下:
$ cat state
Arunachal Pradesh
Assam
Andhra Pradesh
Bihar
Chhattisgrah
$ cat capital
Itanagar
Dispur
Hyderabad
Patna
Raipur
当使用paste后,会将2个文件中的每一行一一对应,同时用tab
符号做分隔:
$ paste number state capital
1 Arunachal Pradesh Itanagar
2 Assam Dispur
3 Andhra Pradesh Hyderabad
4 Bihar Patna
5 Chhattisgrah Raipur
这样的一个工具,自然没法和专业的数据处理库相比,不过每一个小工具都有一个好用的小功能,如果能够对Linux
上这些常用的小功能都比较熟悉的话,那么将大大增加我们在Linux上的开发效率。
实现
这个命令的代码也很好实现了~学习以及使用的系统调用仍然是文件相关的打开,关闭,读取字符等。
以下是代码实现中的一些注意事项:
- 可以使用动态内存或者预先对文件的行数大小做定义,不过无法处理非常非常多行的文件。所以读取以及输出部分建议通过
fgetc()
来获取字符然后立刻输出,每次都处理一个字符,就不需要开辟额外的空间。 - 对无输入,以及可以选择具体哪个字符的
-d
参数做处理,可以使用argc和argv来读取命令行的参数。
运行效果
$ cat state
Arunachal Pradesh
Assam
Andhra Pradesh
Bihar
Chhattisgrah
$ cat capital
Itanagar
Dispur
Hyderabad
Patna
Raipur
$ paste number state capital
1 Arunachal Pradesh Itanagar
2 Assam Dispur
3 Andhra Pradesh Hyderabad
4 Bihar Patna
5 Chhattisgrah Raipur
互相交流
读者你好!如果你对本文内容感兴趣,我十分希望能够和你互相学习,可以扫码和我联系!一起进步