ipython使用awk错误的错误?

时间:2012-10-13 09:54:26

标签: awk ipython

亲爱的!我用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中的变量传输到shell。我该如何处理?

1 个答案:

答案 0 :(得分:0)

我不熟悉ipython,但是要解决有关将shell变量的值传递给awk的部分:你用'awk -v variable = value'来做,所以如果你有一个shell变量“$ 1”包含值“3”,你希望awk根据它打印输入的第三个字段,然后语法为:

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

所以在上面你可以尝试:

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

或者如果需要将shell加倍“$”:

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

希望有所帮助。