string - unix系统 - 如何从每一行返回字符串的特定部分?

这取决于数据文件是否包含问题中显示的' ' (空格),以及'|'分隔的字段数是否是每行的常量,

如果每行的字段数是常数


awk -F '|' '{print $1"|" $9}' infile > newoutfile



如果行格式不是常数

要处理此条件,可以执行以下操作:


awk -F '|' ' {


 for (i=1; i<=NF; i++)


 if ($i ~ /^>ENSMUST/) # remove the '>' if not actually in file


 printf"%s|", $1


 else if (match($i,/[^ACGT]/)==0) {


 print $i


 break


 }


}' infile > newoutfile



在上述两种情况下,你的newoutfile将包含以下字段:


ENSMUST00000193812.1|AAGGAAAGAGGATAACACTTGAAA.....



或者如果'>'在文件中:


>ENSMUST00000193812.1|AAGGAAAGAGGATAACACTTGAAA.....




grep ^'>' gencode.vM23.transcripts.fa | cut -d '|' -f1 > subset



...