0

皆さん! ipython で質問を見つけました。

入力すると

!ls -l | awk '{print $$1}' 

それは私に与えます:

drwxr-xr-x  2 ckivip ckivip  4096 Oct 11 20:38 Desktop

drwxr-xr-x  6 ckivip ckivip  4096 Oct 11 22:57 Documents

drwxrwxr-x  3 ckivip ckivip  4096 Oct 11 12:53 Downloads

drwxr-xr-x  6 ckivip ckivip  4096 Sep 29 18:22 Epigenetics

drwxr-xr-x  2 ckivip ckivip  4096 Sep 20 14:59 Music

drwxr-xr-x 23 ckivip ckivip  4096 Oct 10 11:02 Pictures

drwxr-xr-x  8 ckivip ckivip  4096 Sep 20 15:21 Project

drwx------  5 ckivip ckivip  4096 Sep 25 21:31 R

drwxr-xr-x  5 ckivip ckivip  4096 Oct  9 19:23 Share

ただし、入力すると

!ls -l | awk '{print $1}' 

それは私に与えます:

drwxr-xr-x

drwxr-xr-x

drwxrwxr-x

drwxr-xr-x

drwxr-xr-x

drwxr-xr-x

drwxr-xr-x

drwx------

「$」記号についてはとても迷惑です。そして、最も醜いのは、「awk」関数を使用するときに、「$」を使用してPythonの変数をシェルに転送できないことです。どうすれば対処できますか?

4

1 に答える 1

0

私はipythonに精通していませんが、シェル変数の値をawkに渡すことに関する部分に対処します。これは'awk -v variable = value'を使用して行うため、シェル変数"$1"に値"が含まれている場合3 "で、それに基づいてawkに入力の3番目のフィールドを出力させたい場合、構文は次のようになります。

awk -v f="$1" '{ print $f }'

したがって、上記で試すことができます:

!ls -l | awk -v f="$1" '{print $f}'

または、シェル「$」を2倍にする必要がある場合:

!ls -l | awk -v f="$$1" '{print $f}'

お役に立てば幸いです。

于 2012-10-15T16:32:49.180 に答える