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を入力せずにエコーを実行すると、完全な行が得られます。

#!/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

三つのこと :

  • シェルのキーと値の間にスペースは許可されていません
  • すべての変数でより多くの引用符を使用する
  • cat FILE | する必要はありません。while : 使用while <condition>; do ...; done < FILE

より多くの引用符を使用してください! それらは不可欠です。また、' と " と ` の違いについても学びます。http: //mywiki.wooledge.org/Quoteshttp://wiki.bash-hackers.org/syntax/wordsを参照してください。

于 2012-10-07T13:38:00.600 に答える