将脚本编写为流过滤器或仅参数工具?

将脚本编写为流过滤器或仅参数工具?

我正在编写一组 shell 帮助程序脚本 - 一种用于简单数据/文本文件处理的工具箱。

其中会有一些简单的工具,例如:dateToTimestampshowParagraphHeads

我的问题是:

我应该将它们编写为流过滤器还是仅参数工具?


让我简单解释一下。一些标准 shell 工具显然是一个流过滤器,例如awk,sedtrsort但其他工具仅适用于类似参数date(这是 setter/getter,但无论如何)。

showParagraphHeads:

所以现在,如果我编写一个脚本来显示每个文本块的第一行(尽管 awk/sed 中的短行),答案是显而易见的,因为我需要一些多行流/文件来做到这一点。

dateToTimestamp:

但是如果我写一些将日期从 - 比如说 - YMDhms 转换为时间戳的东西它可以作为流过滤器,也可以作为仅参数工具(类似于date),用法如下: dateToTimestamp DATE_IN_YMDhms


现在,两种方式都有其优点和缺点。有时,使用管道和我的流过滤器会更容易。另一次,我有更复杂的数据,需要awk {system()}在某些列上使用,那么使用基于参数的工具会更容易。


我知道这是一个普遍问题,但也许您知道 *nix 世界中某个地方可能存在的一些约定或准则。

谢谢。

答案1

的一部分Unix哲学是“编写程序来处理文本流,因为这是一个通用接口。”,或者使用流过滤器。

也就是说,您希望(或需要)如何使用这些工具?

让这个问题的答案在逐个工具的基础上回答你的问题,因为 Unix 哲学的另一部分是,具有简单实现的功能简单的程序比与其他程序行为一致的程序更好。

因此,从您的示例中得出,如果转换日期格式的实用程序非常简单(如果它接受参数),那么仅在满足您的需求时才接受参数。

相关内容