ファイルからレコードを読み取る際に問題が発生しました。

ファイルからレコードを読み取る際に問題が発生しました。

次の問題があります:スクリプト

#!/usr/bin/ksh

for unitcaseno in `cat /pims/nigel/UNLOAD-DB/xaa`
do
        echo "String = $unitcaseno"
        unitno=`echo $unitcaseno | cut -d'|' -f1`
        caseno=`echo $unitcaseno | cut -d'|' -f2`
        echo "Unitno = $unitno:Caseno = $caseno"
break
done

ファイルはかなり大きく、最初の録音後に壊れていました。

Sample file:
  349702|            1|
  349702|            1|
  349702|            1|
 1133247|            6|
 1133247|            6|
 12708  |            1|
 12708  |            1|
 299466 |            2|
 299466 |            2|
 299466 |            2|
 299466 |            2|
 501877 |            1|
 501877 |            1|
 55871  |            9|
 55871  |            9|
 64239  |            7|
 64239  |            7|

出力

String = 349702|
Unitno = 349702:Caseno =

私の問題は、2つの出力のうち2番目のフィールドが印刷されないことです。

ベストアンサー1

あなたが経験している問題は

for unitcaseno in `cat /pims/nigel/UNLOAD-DB/xaa`

構造。これにより、ファイルが次に分割されます。性格、行ではありません。これがString = 349702出力で見ることができる理由です。完全な行ではなく、最初の単語だけを見ることができます。

代わりに、次のような機能を検討してください。

while read unitcaseno
do
  ....
done < /pims/nigel/UNLOAD-DB/xaa

これで一度に1行ずつ処理します。

String = 349702|            1|
Unitno = 349702:Caseno =  1

以前に余分なスペースなどの他の問題があることに注意してくださいCaseno。しかし、これは次のステップに進むことができます!

おすすめ記事