1

tcshの.aliasファイルにエイリアスを作成しようとしています。エイリアスは次のようなものです:

alias do "grep -iE '<pattern>' <file> | awk '{if($2 < 0)print}'"

エイリアスを実行しようとすると、次のエラーが発生します。

awk: cmd. line:1: {if( < 0.0) print}
awk: cmd. line:1:      ^ parse error

なぜこれが起こるのか考えていますか?ありがとう。

4

2 に答える 2

2

これを試してみてください。一重引用符をエスケープする必要があり、二重引用符は使用しないでください。

alias do 'grep -iE '\''pattern'\'' filename | awk '\''{if ( $2 < 0 ) print}'\'''
于 2010-11-06T05:17:04.937 に答える
1

さて、あなたが提供するコマンドラインから始めるのはぎこちないです:

$ alias do "grep -iE '' | awk '{if($2 < 0)print}'"
bash: alias: do: not found
bash: alias: grep -iE '' | awk '{if( < 0)print}': not found

私があなたが言っていると思うものにそれを修正すると、私はこれを見る:

$ alias do="grep -iE '' | awk '{if($2 < 0)print}'"
$ alias do
alias do='grep -iE '\'''\'' | awk '\''{if( < 0)print}'\'''

これにより、解析エラーが発生する理由を確認できます。$ 2は、awkこれまでに見たことがないほどシェルに食べられています。代わりにこれを試してください:

$ alias do="grep -iE '' | awk '{if(\$2 < 0)print}'"
$ alias do
alias do='grep -iE '\'''\'' | awk '\''{if($2 < 0)print}'\'''

私の推測では、この時点では、解析エラーは発生しなくなります。(入力として何を使用しているのかわからないので、当然、これについては話すことができません。)

于 2010-11-06T05:05:28.220 に答える