将确切的参数传递给函数

时间:2015-08-31 15:18:35

标签: bash awk

我有一个经常使用的命令:

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}'

但这不符合我的要求。我怎么能做到这一点?

1 个答案:

答案 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采用可选参数,则别名将无效。