go 里面有没有类似python 里的 ''' balabala''' 这种功能的东西

hitcat · 2017-07-26 15:07:05 · 2870 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-07-26 15:07:05 的主题,其中的信息可能已经有所发展或是发生改变。

想调用linux下的awk命令....一个一个+有点乱 。。。。 酱紫的...

mutationid2=os.popen('''awk -F"\t" 'NR>1{
        var["Missense_Mutation"]="Missense_Mutation";
        var["Nonsense_Mutation"]="Nonsense_Mutation";
        var["Nonstop_Mutation"]="Nonstop_Mutation";
        var["Splice_Site"]="Splice_Site";
        var["In_Frame_Del"]="In_Frame_Del";
        var["Frame_Shift_Del"]="Frame_Shift_Del";
        var["In_Frame_Ins"]="In_Frame_Ins";
        var["Frame_Shift_Ins"]="Frame_Shift_Ins";
        if($9 in var){
             print $0;
        }
}' %s |awk -F"\t" '{if($5!="MT" && $5!="X" && $5!="Y" && $1!="Hugo_Symbol" && $10=="SNP"){print $1":"$5":"$6}}' |sort -ru '''%i(maflist)).read().strip().split("\n")

maflist是几百个文件...

想用go做一个一样功能的


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2870 次点击  
加入收藏 微博
1 回复  |  直到 2017-07-26 16:09:47
hitcat
hitcat · #1 · 8年之前

基本上实现了...原来··可以的,小白伤不起啊...,话说就调用一个系统命令要这么多行...

package main

import (
  "fmt"
  "io/ioutil"
  "os/exec"
)

func main() {
  var maflist string = "~/softtest/advance/script/maf/RSS2.somatic.snvindel.maf  ~/softtest/advance/script/maf/RSS4.somatic.snvindel.maf ~/softtest/advance/script/maf/RSS1.somatic.snvindel.maf  ~/softtest/advance/script/maf/RSS3.somatic.snvindel.maf  ~/softtest/advance/script/maf/RSS5.somatic.snvindel.maf"
  var a string =`awk -F"\t" 
 NR>1{var["Missense_Mutation"]="Missense_Mutation";var["Nonsense_Mutation"]="Nonsense_Mutation";var["Nonstop_Mutation"]="Nonstop_Mutation";var["Splice_Site"]="Splice_Site";var["In_Frame_Del"]="In_Frame_Del";var["Frame_Shift_Del"]="Frame_Shift_Del";var["In_Frame_Ins"]="In_Frame_Ins";var["Frame_Shift_Ins"]="Frame_Shift_Ins";if($9 in var){print $0;}}' `+ maflist +` |awk -F"\t" '{if($5!="MT" && $5!="X" && $5!="Y" && $1!="Hugo_Symbol" && $10=="SNP"){print $1":"$5":"$6}}' |sort -ru`
  cmd := exec.Command("/bin/sh", "-c",a)
  stdout, err:= cmd.StdoutPipe()
  if err != nil {
    fmt.Println("StdoutPipe: " + err.Error())
    return
  }
  stderr, err := cmd.StderrPipe()
  if err != nil {
    fmt.Println("StderrPipe: ", err.Error())
    return
  }

  if err := cmd.Start(); err != nil {
    fmt.Println("Start: ", err.Error())
    return
  }

  bytesErr, err := ioutil.ReadAll(stderr)
  if err != nil {
    fmt.Println("ReadAll stderr: ", err.Error())
    return
  }

  if len(bytesErr) != 0 {
    fmt.Printf("stderr is not nil: %s", bytesErr)
    return
  }

  bytes, err := ioutil.ReadAll(stdout)
  if err != nil {
    fmt.Println("ReadAll stdout: ", err.Error())
    return
  }

  if err := cmd.Wait(); err != nil {
    fmt.Println("Wait: ", err.Error())
    return
  }

  fmt.Printf("stdout: %s", bytes)
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传