選択したフィールドを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

関連情報