web-dev-qa-db-ja.com

BASHエイリアスまたは関数でawkを使用する

コマンドラインで問題なく機能するコマンドがありますが、エイリアスまたは関数に入れようとすると機能しません。

$ awk '{print $1}' /tmp/textfile
0

'0'は "textfile"の位置1にあるので、これは正しいです。

$ alias a="awk '{print $1}' /tmp/textfile"
$ a
1 0 136 94

これが「textfile」の行全体です。私は、うまくいくと想像できるあらゆる種類の引用符、括弧、およびバッククォートを試しました。さまざまな形式で同じ問題が発生する可能性があります。

何がわからないの?

27
Corn-fuzed

次のように$をエスケープする必要があります。

 alias a="awk '{print \$1}' /tmp/textfile"

それ以外の場合、エイリアスは次のとおりです。

 awk '{print }' /tmp/textfile

ファイル全体を印刷します...

49
Linus Kleen

エイリアスの代わりに関数を使用する

myfunc(){ awk '{print $1}' file; }
12
ghostdog74