![从文件读取记录时出现问题](https://linux22.com/image/90872/%E4%BB%8E%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96%E8%AE%B0%E5%BD%95%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
我有以下问题:脚本
#!/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
。但这应该会让您进入下一步!