선택한 필드를 Grep하고 잘라내기

선택한 필드를 Grep하고 잘라내기

줄이 특정 이름으로 시작하면 해당 필드를 잘라내려고 합니다.

cat $1|while read line
do
if [ "$1" = "custbills.cmp" ]; then
acc_no=`grep "^Custbills" $1 | cut -c29-43`
acc_type=`grep "^Custbills" $1 |cut -c124-125`
echo "\"${acc_no}\",\"${acc_type}\"" >> out.csv
else 
echo ""
fi
done

하지만 오류가 발생하고 출력 파일에는 ","만 표시됩니다. 내 스크립트에 무슨 문제가 있나요?

답변1

스크립트를 수정하고 결과를 얻었습니다.

if [ "$1" = "custbills.cmp" ]; then
grep "^Custbills" $1 |while read line
do
acc_no=`echo "$line" | cut -c29-43`
acc_type=`echo "$line" |cut -c124-125`
echo "$acc_no","$acc_type" >> out.csv
done
else
echo ""
fi

답변2

다음과 같은:

if [ "$1" = "custbills.cmp" ]
then
        grep "^Custbills" $1 | cut -c29-43,124-125 --output-delimiter="," >> out.csv
else
        echo ""
fi

귀하의 답변과 정확히 동일한 코드 인 것 같습니다. 그러나 테스트하려는 이유에 대한 맥락을 설명하지 않았습니다 "$1". 그냥 말하지 그래

grep "^Custbills" "custbills.cmp" | cut -c29-43,124-125 --output-delimiter="," > out.csv

?

관련 정보