次のように.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
どちらも短く、おそらくその機能は必要ありません。