0
亲爱的!我发现一个ipython的问题。ipython的作品与awk错误吗?
当我输入
!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。我该如何处理它?
IPython允许您使用'$ var'将Python变量放入命令中,因此如果要将'$'文字传递给命令,则必须将其加倍。你也可以使用'{var}',它可能在更多情况下工作。 –
在第一种情况下,我使用双'$'。但是,它给了我一个错误的答案。在第二种情况下,我只使用一个'$'。它给了我正确的答案。为什么? @Thomas K – xiuxing
哦,因为整个位都在{}括号内(并且它不是一个有效的Python表达式),它会按原样传递。所以你不需要把它加倍。 –