如何在R中使用混合引号执行awk调用?
我需要从R到运行如何在R中使用混合引号执行awk调用?,r,awk,R,Awk,我需要从R到运行awk,以确保它始终具有固定的宽度。像这样: $ cat -e file 1$ 12$ 123$ 1234$ $ awk '{printf "%-10s\n", $0}' file | cat -e 1 $ 12 $ 123 $ 1234 $ 12345 $ 然而,我在R内部做这件事有困难。处理类似的事情,但它似乎对我不起作用 > ' awk \'{printf "%-180s\n", $0}\' file '
awk
,以确保它始终具有固定的宽度。像这样:
$ cat -e file
1$
12$
123$
1234$
$ awk '{printf "%-10s\n", $0}' file | cat -e
1 $
12 $
123 $
1234 $
12345 $
然而,我在R内部做这件事有困难。处理类似的事情,但它似乎对我不起作用
> ' awk \'{printf "%-180s\n", $0}\' file '
[1] " awk '{printf \"%-180s\n\", $0}' file "
> system(' awk \'{printf "%-180s\n", $0}\' file ')
awk: cmd. line:1: {printf "%-180s
awk: cmd. line:1: ^ unterminated string
awk: cmd. line:1: {printf "%-180s
awk: cmd. line:1: ^ syntax error
我还尝试了
系统(“awk'{printf\“%-180s\n\”,$0}'文件”)
,但出现了完全相同的错误。我不确定为什么会失败,但这似乎与混合报价有关。有没有办法让这一切顺利进行 这个想法是正确的,您只需在\n
中转义\
。因为它是由printf()
内部awk
处理的,所以您需要对它进行转义,让它被逐字处理
system("awk '{printf \"%-10s\\n\",$0}' file")
或者使用变量
awkcommand <- "awk '{printf \"%-10s\\n\",$0}' file"
system(awkcommand)
awkcommand这完全把我吓跑了。你是说R在不调用系统命令的情况下无法执行此操作吗?嗯,我太傻了,现在错误消息更有意义了。。。谢谢