単一ファイルの行を1行ずつ比較し、出力を同じファイルに追加する方法

単一ファイルの行を1行ずつ比較し、出力を同じファイルに追加する方法

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

各行の末尾に、またはを追加する方法がわかりませんSUCCESSFAILUREそれを実現する方法を学びましょう!

ベストアンサー1

これらすべてをawkで行うことができます。 awk は入力の各行に対してスクリプトを実行します。

awkステートメントは、print x yxと式のy間にスペースやフィールドの区切り文字なしで並べて印刷します。

awk表現はa ? b : c「if ais true then belse c」を意味します。

awk -F"," '{ print $0 (($1 == $2) ? "SUCCESS" : "FAILURE") }' < abc.csv

おすすめ記事