这可能是许多常见问题解答 - 而不是使用:
cat file | command
Run Code Online (Sandbox Code Playgroud)
(这被称为无用的猫),正确的方式应该是:
command < file
Run Code Online (Sandbox Code Playgroud)
在第二,"正确"的方式 - 操作系统不必产生额外的过程.
尽管知道这一点,我继续使用无用的猫有两个原因.
更美观 - 我喜欢数据仅从左到右均匀移动.而且它更容易更换cat别的东西(gzcat,echo,...),添加第二个文件或插入新的过滤器(pv,mbuffer,grep...).
我"觉得"在某些情况下可能会更快.更快,因为有2个进程,1st(cat)执行读取而第二个执行任何操作.它们可以并行运行,这意味着有时可以更快地执行.
我的逻辑是否正确(第二个原因)?
我无法将stdin传递给R脚本.
这是我的玩具脚本test.R:
#!/usr/bin/env Rscript
while(length(line <- readLines('stdin', n=1, warn=FALSE)) > 0) {
write(line, stderr())
# process line
}
Run Code Online (Sandbox Code Playgroud)
我想通过每一行并做一些处理.这是我的输入文件名input:
aaaaaa
bbbbbb
cccccc
dddddd
eeeeee
ffffff
Run Code Online (Sandbox Code Playgroud)
如果我做
cat input | test.R
Run Code Online (Sandbox Code Playgroud)
我只得到:
aaaaaa
Run Code Online (Sandbox Code Playgroud)
有什么我错过的吗?
使用你期望在nix系统上找到的任何工具(事实上,如果你愿意,msdos也可以),那么计算一组数字的平均值的最简单/最快的方法是什么,假设你有一个流或文件中的每一行?
如果我有一个列很少的文件,我想使用AWK命令来显示特定列中的最大和最小数字!
例:
a 212
b 323
c 23
d 45
e 54
f 102
Run Code Online (Sandbox Code Playgroud)
我希望我的命令显示最低数字是23,另一个命令说最高数字是323
我不知道为什么答案不起作用!我把一个更现实的文件示例(也许我应该提到的是标签确定)
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="# high-quality bases">
##FORMAT=<ID=SP,Number=1,Type=Integer,Description="Phred-scaled strand bias P-value">
##FORMAT=<ID=PL,Number=-1,Type=Integer,Description="List of Phred-scaled genotype likelihoods, number of values is (#ALT+1)*(#ALT+2)/2">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT rmdup_wl_25248.bam
Chr10 247 . T C 7.8 . DP=37;AF1=0.5;CI95=0.5,0.5;DP4=7,1,19,0;MQ=15;FQ=6.38;PV4=0.3,1,0.038,1 GT:PL:GQ 0/1:37,0,34:36
Chr10 447 . A C 75 . DP=30;AF1=1;CI95=1,1;DP4=0,0,22,5;MQ=14;FQ=-108 GT:PL:GQ 1/1:108,81,0:99
Chr10 449 . G C 35.2 . DP=33;AF1=1;CI95=0.5,1;DP4=3,2,20,3;MQ=14;FQ=-44;PV4=0.21,1.7e-06,1,0.34 GT:PL:GQ 1/1:68,17,0:31
Chr10 517 . G A 222 . …Run Code Online (Sandbox Code Playgroud)