我有一个经常使用的命令:
awk 'BEGIN {RS="dn"} {gsub("\n ", ""); print $0}'
以我想要的方式解析数据。我没有把它写出来,而是把它保存起来,我只是想在任何时候使用它来复制/粘贴它。我想把它变成一个简单的函数fixline.sh
,而不是做:
my_command | awk 'BEGIN {RS="dn"} {gsub("\n ", ""); print $0}'
每一次,我都可以这样做:
my_command | fixline.sh
但我不确定如何使用bash
完成此操作。我试过了
echo "$@" | awk 'BEGIN {RS="dn"} {gsub("\n ", ""); print $0}'
但这不符合我的要求。我怎么能做到这一点?
答案 0 :(得分:4)
使用功能
fixline() {
awk 'BEGIN {RS="dn"} {gsub("\n ", ""); print $0}'
}
然后只需使用awk将从标准输入中读取就好(正如您所知)
my_command | fixline
为了完整起见,虽然上述方法在各方面都很优越,但也可以为这一特定情况使用别名
alias fixline='awk '\''BEGIN {RS="dn"} {gsub("\n ", ""); print $0}'\'
如果您希望fixline
采用可选参数,则别名将无效。