在这里,我有多个文件,例如 3 个具有相同行和列的文件,现在我想从每个文件中提取第二列并将它们粘贴到一个新文件中。当我在 linux bash 中运行以下命令时,它可以工作。
paste <(awk 'BEGIN{OFS="t"}(NR>1){print $2}' text1.txt) <(awk 'BEGIN{OFS="t"}(NR>1){print $2}' text2.txt) <(awk 'BEGIN{OFS="t"}(NR>1){print $2}' text3.txt) > output.txt
当我尝试使用 R 脚本通过 system() 函数运行此命令时
cmd = paste0("paste ", paste0("<(awk 'BEGIN{OFS="t"}(NR>1){print $2}' text", 1:3, ".txt) ", collapse = ""), " > output.txt", collapse = "")
system(cmd)
它返回错误:
syntax error near unexpected token `('
谁能帮我。感谢任何帮助。
<()
仅在扩展 shell(ksh93、bash、zsh 等)中可用;system()
使用sh
。但是,您可以编写一个适用于sh
的等效脚本:
while read _ a _ <&3 && read _ b _ <&4 && read _ c _ <&5; do
printf '%st%st%sn' "$a" "$b" "$c"
done 3<text1.txt 4<text2.txt 5<text3.txt >output.txt