0

我有一个简单的问题 - 我正在尝试解决一系列输出已更改的文件的问题。

输出应如下所示:

>Tests HadI-sdds1:4134:AAABBBBB:1:1101:6635:2407_2:N:0:TTTTTT
AAAABBBBBEEEECCCCERTTSFASFASFDSGFSDGGSFGFSGDFGDFGDFGDFGDFGDFGDFGDCCVBWAAAABBBBBEEEECCCCERTTSFASFASFDSGFSDGGSFGFSG

但显示为:

>Tests HadI-sdds1:4134:AAABBBBB:1:1101:6635:2407_2:N:0:TTTTTT
AAAABBBBBEEEECCCCERTTSFASFASFDSGFSDGGSFGFSGDFGDFGDFGDFGDFGDFGDFGDCCVBW
AAAABBBBBEEEECCCCERTTSFASFASFDSGFSDGGSFGFSG

我已经编写了以下代码来尝试修复它,但是第 16 行似乎返回了一个空字符串,但是当我在没有输入 var 的情况下执行 echo 时,我得到了完整的行。

#!/bin/sh 
FILENAME=$1
OUTPUT=$2
set LineToWrite=''

while read LINE 
do
if  [ `echo "$LINE" | awk '{print substr($0,1,1)}'` == ">" ]
    then
        echo "$LineToWrite" >> $OUTPUT
        echo "$LINE" >> $OUTPUT
        set LineToWrite=''
    else
        set currLine=`echo "$LINE" | awk '{print substr($0,1,70)}'`
        set LineToWrite+=$currLine
fi
done <$FILENAME

有什么想法可以解决我的问题吗?(文件包含 > 100 万行)

非常感谢提前!!!!

4

1 回答 1

0

Three things :

  • no space allowed between keys & values in shell
  • use more quotes on all variables
  • no need to cat FILE | while : use while <condition>; do ...; done < FILE

USE MORE QUOTES! They are vital. Also, learn the difference between ' and " and `. See http://mywiki.wooledge.org/Quotes and http://wiki.bash-hackers.org/syntax/words

于 2012-10-07T13:38:00.600 回答