从文件读取记录时出现问题

从文件读取记录时出现问题

我有以下问题:脚本

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

我的问题是它没有打印出任一输出中的第二个字段。

答案1

你遇到的问题是

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

结构。这会将文件分割成,不是线。这就是您String = 349702在输出中看到的原因;您只能看到第一个单词,而看不到整行。

相反,考虑一个类似于

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

现在您一次处理一行

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

注意您还有其他问题;例如 之前的额外空格Caseno。但这应该会让您进入下一步!

相关内容