我正在尝试将fastq文件中的所有坐标信息更改为零。我的输入文件由以下重复的4行结构中的数百万个条目组成:
@HWI-SV007:140:C173GACXX:6:2215:16030:89299 1:N:0:CAGATC
GATTACAGATTACAGATTACAGATTACAGATTACAGATTACAGATTACAGATTACAG
+
@@@FFFDFHGGDHIIHGIJJJJJJJJJJJGIJJJJJJJIIIDHGHIGIJJIIIJJIJ
我想以通用方式用零替换第一行16030:89299
中的两个数字字符串,以便替换冒号之前的冒号之间的任何数字字符串。我希望输出显示如下,用零替换整个文件中的两个字符串:
@HWI-SV007:140:C173GACXX:6:2215:0:0 1:N:0:CAGATC
GATTACAGATTACAGATTACAGATTACAGATTACAGATTACAGATTACAGATTACAG
+
@@@FFFDFHGGDHIIHGIJJJJJJJJJJJGIJJJJJJJIIIDHGHIGIJJIIIJJIJ
我正在尝试使用以下sed执行此操作:
sed 's/:^[0-9]+$:^[0-9]+$\s/:0:0 /g'
但是,这并不像预期的那样。
答案 0 :(得分:1)
我认为您需要使用sed -r
选项。
此外,^
匹配行的开头,$
匹配行的结尾。
因此,这是针对您的样本的命令行。
sed -r 's/:[0-9]+:[0-9]+\s/:0:0 /g'
答案 1 :(得分:0)
一些替代
awk -F ":" 'BEGIN{ OFS = ":" }{ if ( NF > 1 ) {$6 = 0; sub( /^[0-9]*/, 0, $7)}; print $0 }' YourFile
使用:
sed 's/^\(\([^:]*:\)\{5\}\)[^[:blank:]]*/\10:0/' YourFile
使用由:
空格分隔的5个第一个元素作为分隔符
为你的sed
sed 's/:[0-9]+:[0-9]+\(\s\)/:0:0\1/'
^
和$
相对于整个字符串而不是当前字词\t
的情况)g
(最好不要在这里使用)因为每行只有1次出现