用两条指令运行sed

Gep*_*ada 5 bash sed

我想运行这些sed行:

sed 's/\/1\/1/\/1/g' file -i && sed 's/\/2\/2/\/2/g' file -i
Run Code Online (Sandbox Code Playgroud)

在这样的文件上:

chr9_paternal   126628489       126629719       616L7AAXX_HWUSI-EAS627_0005:1:1:1157:5733/1/1   0       +       126628489       126629719       255,0,0 2
       19,57   0,1173
chr20_paternal  34093622        34093697        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:4527/1/1   0       +       34093622        34093697        255,0,0 1
       75      0
chr17_paternal  44627748        44633513        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:5412/2/2   0       +       44627748        44633513        255,0,0 2
       36,40   0,5725
chr1_paternal   224204536       224204611       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:2312/1   0       +       224204536       224204611       255,0,0 1
       75      0
chr7_paternal   132309510       132309585       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:1687/2/2   0       +       132309510       132309585       255,0,0 1
       75      0
chr20_paternal  45708069        45708144        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:13916/1  63      +       45708069        45708144        255,0,0 1
       75      0
chr9_paternal   134850662       134850737       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:10141/1/1  72      +       134850662       134850737       255,0,0 1
       75      0
chrX_paternal   71603273        71603348        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:8367/2   30      +       71603273        71603348        255,0,0 1
Run Code Online (Sandbox Code Playgroud)

为了得到这个输出:

chr9_paternal   126628489       126629719       616L7AAXX_HWUSI-EAS627_0005:1:1:1157:5733/1   0       +       126628489       126629719       255,0,0 2
       19,57   0,1173
chr20_paternal  34093622        34093697        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:4527/1   0       +       34093622        34093697        255,0,0 1
       75      0
chr17_paternal  44627748        44633513        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:5412/2   0       +       44627748        44633513        255,0,0 2
       36,40   0,5725
chr1_paternal   224204536       224204611       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:2312/1   0       +       224204536       224204611       255,0,0 1
       75      0
chr7_paternal   132309510       132309585       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:1687/2   0       +       132309510       132309585       255,0,0 1
       75      0
chr20_paternal  45708069        45708144        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:13916/1  63      +       45708069        45708144        255,0,0 1
       75      0
chr9_paternal   134850662       134850737       616L7AAXX_HWUSI-EAS627_0005:1:1:1158:10141/1  72      +       134850662       134850737       255,0,0 1
       75      0
chrX_paternal   71603273        71603348        616L7AAXX_HWUSI-EAS627_0005:1:1:1158:8367/2   30      +       71603273        71603348        255,0,0 1
Run Code Online (Sandbox Code Playgroud)

但文件很大,我不想读两遍.可以运行一次执行两条指令的sed代码吗?

jco*_*ado 6

您可以使用-e在一个sed调用中执行多个表达式:

sed -e <expr> -e <expr> -i <file>
Run Code Online (Sandbox Code Playgroud)


Hai*_* Vu 5

如果我理解正确的话,你想替换/1/1/1和 同样,替换/2/2/2

sed -i 's:/1/1:/1:;s:/2/2:/2:' file
Run Code Online (Sandbox Code Playgroud)

使用冒号:代替,/这样可以避免转义。