亲爱的!我用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。我该如何处理?
答案 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}'
希望有所帮助。