使用bash将每行的前10个字符写入新文件

时间:2015-06-05 13:12:16

标签: bash

我为使用我的文件内容使用代码指定而道歉,但格式化却很奇怪。

我有一个6,6494,940行文件,其中包含以下内容:

@MSQ-M01247R:81:000000000-ACWD8:1:1101:11811:1088 2:N:0:
CCCCCTCTTCCCTTTCTTCCCCCCTCTTTCTTCTTTCTCTTTTCTCCCTCTCCTTTTTTTCTCCTTTTTTTCCTTT
+
############################################################################

我想按顺序将每行的前10个字符写入新文件:

@MSQ-M0124
CCCCCTCTTC
+
##########

我使用了以下bash脚本:

while read line
do
        long=$line
        short=${long:0:10}
        echo ${short} 
done < $1

使用以下命令:

./bashscript.sh fileread.fastq >> filewrite.fastq

结果

出了点问题。我的新/写文件有628,429,568,但它应该像原始/读取文件一样有66,494,940。所以看起来它一直在循环。

当我在新/写文件上使用head命令时,我得到:

@MSQ-M0124
CCCCCTCTTC
+
##########
@MSQ-M0124
CCTCCTCCTT
+
##########
@MSQ-M0124
CCTTCTTCTT

当我使用tail命令时,我得到:

CCCCCGGGGG
+
CCCCCGGGGG
GAGTCGTCTG
+
CCCCCGGGGG
+
CCCCCGGGGG
GAGTCGTCTG
+
CCCCCGGGGG
+
CCCCCGGGGG
GAGTCGTCTG
+

1 个答案:

答案 0 :(得分:5)

cut是你的朋友!

$ cut -c-10 file
@MSQ-M0124
CCCCCTCTTC
+
##########

这会使用cut c 字符中的选项-c来获取范围-10,这意味着从1日到10日。