微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将用户定义的bash函数与管道连接

如何解决如何将用户定义的bash函数与管道连接

| 从某些时候开始,我真的很喜欢bash功能。让我们考虑一个文件的第n列计算平均值的函数
avg () { awk -v c=\"$2\" \'{n+=$c;m++} END{print n/m,m}\' < \"$1\"; }
是否可以重写它以便从管道读取数据?即在以下功能中使用该功能
cat data.txt | avg
    

解决方法

        
avg () { awk -v c=\"$1\" \'{n+=$c;m++} END{print n/m,m}\'; }
(echo 1 3; echo 2 4; echo 4 6) | avg 2
avg 2 < /tmp/file
如果要保留API:
avg () { (if [ \"x$1\" = \"x-\" ]; then cat; else cat $1; fi) | awk -v c=\"$2\" \'{n+=$c;m++} END{print n/m,m}\'; }
(echo 1 3; echo 2 4; echo 4 6) | avg - 2
avg /tmp/file 2
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。