行が特定の名前で始まる場合は、そのフィールドを切り取りようとします。
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
?