在 Bash 中的别名中插入用户定义的变量

在 Bash 中的别名中插入用户定义的变量

我想为文件中的命令添加别名.bashrc,如下例所示:

alias take_row="cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'"

但我想nrow在从终端启动命令时指定变量。举个例子:

take_row 1--> 脚本占据第一行

take_row 20--> 脚本占用第 20 行

如何在命令中写入诸如<command> | <read nrow user input>等之类的内容?

答案1

使用函数而不是别名,在这种情况下您可以引用位置参数,例如$1等。

take_row () {
    local nrow="$1"
    cat prova.csv_001.txt | awk -v nrow="${nrow}" '{if (NR==nrow) print}'
}

在这种特殊情况下,您还可以解决对猫的无用利用:

take_row () {
    local nrow=$1
    awk -v nrow="${nrow}" '{if (NR==nrow) print}' prova.csv_001.txt
}

...并通过删除不需要的代码使其变得更短:

take_row () {
    local nrow=$1
    awk -v nrow="${nrow}" 'NR==nrow' prova.csv_001.txt
}

相关内容