假设我想在一个以制表符分隔的文件中按列聚合值并保留标题。
我可以这样做:
如果我想仅对第k列进行求和,以下代码是否可行?
这些语句如何被bash解释?
我可以这样做:
(head -n 1 <infile> && tail -n +2 | awk '{s+=$1} END {print s}' <infile>) > <outfile>
但是假设我希望输入来自一个管道(例如,我正在对特定列执行操作),该怎么办呢?
我该如何做到这一点?
下面的一行代码是否有效?
(head -n 1 && tail -n +2 | awk '{s+=$1} END {print s}') <infile> > <outfile>
如果我想仅对第k列进行求和,以下代码是否可行?
cut -f<k> <infile> | (head -n 1 && tail -n +2 | awk '{s+=$1} END {print s}') > <outfile>
这些语句如何被bash解释?
<infile>
,因为它只是一个错误)。话虽如此,你不想在这里烦扰涉及到head
或tail
,直接使用awk
完成所有操作(使用NR
根据当前行号执行不同的操作等)。 - Etan Reisner