bash tips:巧用xargs来组合不同命令

在处理数据时,使用python编写了一个小程序,可将多个同类型但文件头次序有可能不同的csv文件进行合并,其使用方法为:

python3 csvmerge.py --output=output.csv input1.csv input2.csv ...

输入文件少的时候直接输入文件名称执行即可,但若文件很多,一个一个键入则是个苦差事,还容易出错,因此想是否可以通过管道来组合命令。

直接想到的是:

ls input-*.csv | python3 csvmerge.py --output=output.csv

但发现这样后边的程序其实是没有接受前面管道的输出结果,导致其并没有对应的输入参数。搜索后发现xargs是解决这类问题的一个最佳方案。

ls input-*.csv | xargs python3 csvmerge.py --output=output.csv

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注