abc.csv
次の内容を含むファイルがあります。
a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,a6caa290d03ae75dd5f3bf9214f0b523;CO.jar,
a1a5bf1547f50feea4120290343f89e4;Common.jar,a1a5bf1547f50feea4120290343f89e4;Common.jar,
1264897ea44d85c3f0dba127ff02f514;DA.jar,1264897ea44d85c3f0dba127ff02f514;DA.jar,
e77834d4ba2a4193b94fee9470a458a4;FW.jar,e77834d4ba2a4193b94fee9470a458a4;FW.jar,
ファイルを1行ずつ読み取り、前の値と後の値を比較して両方が,
同じ場合はSUCCESS
行の同じ端に書き、それ以外の場合は行FAILURE
の同じ端に書き込む必要があります。
私は次を試しました。
for I in `cat abc.csv`
do
VAR1=`echo $I | awk -F"," {'print ${1}'}
VAR2=`echo $I | awk -F"," {'print ${2}'}
if [ ${1} == ${2} ]
then
..
fi
done
各行の末尾に、またはを追加する方法がわかりませんSUCCESS
。FAILURE
それを実現する方法を学びましょう!
ベストアンサー1
これらすべてをawkで行うことができます。 awk は入力の各行に対してスクリプトを実行します。
awkステートメントは、print x y
式x
と式のy
間にスペースやフィールドの区切り文字なしで並べて印刷します。
awk表現はa ? b : c
「if a
is true then b
else c
」を意味します。
awk -F"," '{ print $0 (($1 == $2) ? "SUCCESS" : "FAILURE") }' < abc.csv