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

4

1 回答 1

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 "$"s 加倍:

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

希望有帮助。

于 2012-10-15T16:32:49.180 回答