Bash:パラメータを使用してawkの.bashrcにエイリアスを作成する方法

Bash:パラメータを使用してawkの.bashrcにエイリアスを作成する方法

次のように.bashrcファイルにエイリアスを追加しようとしています。

...
alias cutf="_cutf"
...
_cutf() {
   awk 'NR >= $2 && NR <= $3 { print }' < $1
}

(この関数の目的は、$ 1ファイル内の$ 2と$ 3の間に番号が付けられた行の内容を表示することです。)

新しいbashセッションでcutfを呼び出すと、出力は出ません。

私は何を逃したことがありませんか?

ベストアンサー1

$ 2と$ 3は一重引用符で囲まれています。シェルは一重引用符で囲まれた変数を拡張しないため、からawk二重引用符に変換されます。

awk "NR >= $2 && NR <= $3 { print }" < "$1"

以下を使用して同じ結果を得ることができます。

sed -n 'X,Yp' file

ここで、XとYは行番号、またはPerlでも同様です。

perl -ne 'print if X .. Y' file

どちらも短く、おそらくその機能は必要ありません。

おすすめ記事