다음과 같은 문제가 있습니다: 스크립트
#!/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
. 하지만 이렇게 하면 다음 단계로 넘어갈 수 있습니다!