シェルスクリプトを使用してファイルを読み込むと、行の形式が変更されました。

シェルスクリプトを使用してファイルを読み込むと、行の形式が変更されました。

ファイルを読み取るには、次のコードを使用しています。

displayLine(){
    echo $line
}

filename="SampleFile"
while read line
do
    displayLine $line
done < "$filename"

スクリプトを使用した後に取得するファイル形式は次のとおりです。

ID EVENT OK NOK
101 ABC1123 ok nok
101 ABC1223 ok      
101 ABC1323 ok nok
101 ABC1423 ok nok

ただし、ファイルの実際の形式は次のとおりです。

ID  EVENT       OK      NOK
101 ABC1123     ok      nok
101 ABC1223     ok      
101 ABC1323     ok      nok
101 ABC1423     ok      nok

私のスクリプトは何とか単語間の余分なスペースを切り取ります。しかし、ファイルの実際の形式が必要です。

誰でもこれを達成する方法を教えてもらえますか?

ありがとうございます! !

答え1

変数を参照し、IFS=次のようにreadで使用します。

displayLine(){ printf '%s\n' "$line"; }

filename="infile"

while IFS= read -r line
do
    displayLine "$line"
done < "$filename"

関連情報