将多个字符串写入stdout并分别管道它们

时间:2015-08-17 05:36:10

标签: javascript node.js unix pipe stdout

是否可以将写入标准输出的每个字符串传递给另一个命令?

// file example.js
#!/usr/bin/env node
process.stdout.write('foo')
process.stdout.write('bar')

当我运行./example.js | wc -m时,我得到6,foobar的字符长度值。

我想分别获得值3和3。我必须在我的javascript文件中做一些特别的事情吗?还是命令?

2 个答案:

答案 0 :(得分:0)

wc -m 计算其输入中的字符数。您不能将其分开/逐行(或任何其他分组)。这与您的JS代码无关。

如果您想通过其他方式获得计数类型,那么对节点来说实际上并不太难!

答案 1 :(得分:0)

由于您提到您的内容可能是一个包含空格和文件的文件。假设您需要每个文件的字符数

//example.js    
#!/usr/bin/env node
process.stdout.write('foo')
process.stdout.write('~') // print any delimiter which is not part of your files content
process.stdout.write('bar')

//Split them using awk and count it as usual
./example.js | awk 'BEGIN { RS="~" } {print}' | wc -m
3
3

//or just using awk by removing spaces
./example.js | awk 'BEGIN { RS="~" } {gsub(" ", "", $0); print length}'

希望这有帮助