让 R 打印包含“”、“”和转义字符 \ 的系统调用
having R print a system call that contains "", '', and escape character \
我需要从 R 脚本中 运行 一个 perl 命令。我通常会通过以下方式执行此操作:
system(paste0('my command'))
但是,我要粘贴的命令包含单引号和双引号以及转义符。具体来说,我想粘贴这个命令:
perl -pe '/^>/ ? print "\n" : chomp' in.fasta | tail -n +2 > out.fasta
我试过用更多的转义字符转义双引号,这让我可以通过命令,但它随后打印了所有 3 个转义字符,这导致命令失败。有没有解决这个问题的好方法,这样我就可以将上面的 perl 行保存为 R 中的字符串,然后我可以将其传递给 system()
函数?
嘿,我没有测试您的特定 perl
调用(因为它涉及特定的 file/directory 等),但通过转义引号尝试了一些微不足道的事情,它似乎有效。您可能还想参考 this 问题以获得更多信息。
我的做法,
# shouldnt have any text expect for an empty string
my_text <- try(system(" perl -e 'print \"\n\"' ", intern = TRUE))
my_text
[1] ""
# should contain the string - Hello perl from R!
my_text2 <- try(system(" perl -e 'print \"Hello perl from R!\"' ", intern = TRUE))
my_text2
[1] "Hello perl from R!"
所以根据以上试验,我认为这对你有用 -
try(system(command = "perl -pe '/^>/ ? print \"\n\" : chomp' in.fasta | tail -n +2 > out.fasta", intern = TRUE))
注意 - intern = TRUE
只是将输出捕获为 R 中的字符向量。
我需要从 R 脚本中 运行 一个 perl 命令。我通常会通过以下方式执行此操作:
system(paste0('my command'))
但是,我要粘贴的命令包含单引号和双引号以及转义符。具体来说,我想粘贴这个命令:
perl -pe '/^>/ ? print "\n" : chomp' in.fasta | tail -n +2 > out.fasta
我试过用更多的转义字符转义双引号,这让我可以通过命令,但它随后打印了所有 3 个转义字符,这导致命令失败。有没有解决这个问题的好方法,这样我就可以将上面的 perl 行保存为 R 中的字符串,然后我可以将其传递给 system()
函数?
嘿,我没有测试您的特定 perl
调用(因为它涉及特定的 file/directory 等),但通过转义引号尝试了一些微不足道的事情,它似乎有效。您可能还想参考 this 问题以获得更多信息。
我的做法,
# shouldnt have any text expect for an empty string
my_text <- try(system(" perl -e 'print \"\n\"' ", intern = TRUE))
my_text
[1] ""
# should contain the string - Hello perl from R!
my_text2 <- try(system(" perl -e 'print \"Hello perl from R!\"' ", intern = TRUE))
my_text2
[1] "Hello perl from R!"
所以根据以上试验,我认为这对你有用 -
try(system(command = "perl -pe '/^>/ ? print \"\n\" : chomp' in.fasta | tail -n +2 > out.fasta", intern = TRUE))
注意 - intern = TRUE
只是将输出捕获为 R 中的字符向量。