我有以下问题:脚本
#!/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
。但这应该会让您进入下一步!