2013-02-20 147 views
1

複製行我有這樣類似項的文件:與SED和剪切命令

@HWI-ST750:151:C1C6AACXX:8:1101:10000:14114/1 
AAACATACCATTGCATATTTCGTATAATTCGAATTTAAGCAAGTTGTATTGCCAACAGCTCAGATCAATTAAGAATCTTTTCAAATTTATCAATTTA 
+/1 
DDHBFHHIAHHJEGJFGICHG;CGHGIJIIAIHHIJIGAGIE9FDFHGHG:[email protected]=;@FHI:DACHE>>[email protected];[email protected];)6(>[email protected]>[email protected] 
@HWI-ST750:151:C1C6AACXX:8:1101:10000:37802/1 
GTTCCTTTACTTGCTCCCATGTCCCAATCTAACACACATGAGTCGTCGCACGCCAGTAAATCTAAAGATTTCAGACACTCAGACTCGTACAGTGAAA 
+/1 
[email protected]DEEEEDDDDDDDDDCDDCCCDDDABBDD>CC>A 

我希望削減每2號線,從1日至45字。所以我用下面的命令:

sed "0~2p" BT8_A.fastq | cut -c1-45 | head -n 12 

它工作正常,但削減1日45個字同一條線路後,得到追加到下一line.Like本 -

@HWI-ST750:151:C1C6AACXX:8:1101:10000:14114/1 
AAACATACCATTGCATATTTCGTATAATTCGAATTTAAGCAAGTT 
AAACATACCATTGCATATTTCGTATAATTCGAATTTAAGCAAGTT 
+/1 
DDHBFHHIAHHJEGJFGICHG;CGHGIJIIAIHHIJIGAGIE9FD 
DDHBFHHIAHHJEGJFGICHG;CGHGIJIIAIHHIJIGAGIE9FD 
@HWI-ST750:151:C1C6AACXX:8:1101:10000:37802/1 
GTTCCTTTACTTGCTCCCATGTCCCAATCTAACACACATGAGTCG 
GTTCCTTTACTTGCTCCCATGTCCCAATCTAACACACATGAGTCG 
+/1 
[email protected] 
[email protected] 

我不能夠解決這個。我在哪裏錯了。幫我。

謝謝。

我所需的輸出是:

@HWI-ST750:151:C1C6AACXX:8:1101:10000:14114/1 
AAACATACCATTGCATATTTCGTATAATTCGAATTTAAGCAAGTT 
+/1 
DDHBFHHIAHHJEGJFGICHG;CGHGIJIIAIHHIJIGAGIE9FD 
@HWI-ST750:151:C1C6AACXX:8:1101:10000:37802/1 
GTTCCTTTACTTGCTCCCATGTCCCAATCTAACACACATGAGTCG 
+/1 
[email protected] 

回答

3

如果你想削減只有每2號線,保留其他不變,這可能是更容易使用awk

awk 'NR % 2 == 0 { print substr($0, 0, 45) } NR % 2 == 1 { print }' BT8_A.fastq 
+0

BINGO!謝謝你..確實是我想要的.. :) 但是上面的代碼出了什麼問題?! – PoisonAlien 2013-02-20 10:17:44

+1

@poisonAlien:通常情況下,'sed'在執行命令後總是打印模式空間的內容(除非用'-n'告訴它)。所以'0〜2p'告訴它打印偶數行a * second *時間,除了打印它將要做的行。另外,你將所有'sed'的輸出傳遞給'cut',所以奇數行也會被減少到前45個字符。 – OpenSauce 2013-02-20 13:22:41

3

方式一:

$ sed 'n;s/\(.\{45\}\).*/\1/' file 
+0

謝謝。工作很好.. – PoisonAlien 2013-02-20 10:24:34

+0

+ 1比我的更好,理由是'sed'比'awk'更冷(因爲在OP中請求了'sed') – OpenSauce 2013-02-20 13:23:31

2

這裏是sed單行:

sed -r '2~2s/^(.{45}).*/\1/' file 

輸出:

kent$ sed -r '2~2s/^(.{45}).*/\1/' file           │drwxr-xr-x 4 kent kent 160 Feb 15 16:48 pkg/ 
@HWI-ST750:151:C1C6AACXX:8:1101:10000:14114/1           │-rw-r--r-- 1 kent kent 19 Feb 15 14:06 status.xml 
AAACATACCATTGCATATTTCGTATAATTCGAATTTAAGCAAGTT           │-rw-r--r-- 1 kent kent 18K Feb 15 16:44 tinyswitch.tgz 
+/1                     │-rw-r--r-- 1 kent kent 73 Feb 15 14:06 t.sh 
DDHBFHHIAHHJEGJFGICHG;CGHGIJIIAIHHIJIGAGIE9FD           │-rw-r--r-- 1 kent kent 18K Feb 15 16:24 tsw.tgz 
@HWI-ST750:151:C1C6AACXX:8:1101:10000:37802/1           │-rw-r--r-- 1 kent kent 7.5K Feb 19 18:44 vimod.zsh 
GTTCCTTTACTTGCTCCCATGTCCCAATCTAACACACATGAGTCG           │-rw-r--r-- 1 kent kent 23K Feb 19 22:09 vimrd 
+/1                     │-rw-r--r-- 1 kent kent 42 Feb 17 16:00 x.txt 
[email protected]