web-dev-qa-db-ja.com

ユーザー定義変数を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>などのように書き込むにはどうすればよいですか?

7
cccnrc

エイリアスの代わりに関数を使用します。この場合、$1などの位置パラメータを参照できます。

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

この特定のケースでは、 無用なcatの使用 にも対処できます。

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