私のスクリプト形式が機能するには、grepの結果に0を追加する必要がありますが、どうすればよいかわかりません。私のgrepの結果は次のとおりです。
261 : 261 = 0 | 1192 : 1184 = 8 |
283 : 283 = 0 | 666 : 659 = 7 |
267 : 267 = 0 | 631 : 620 = 11 |
283 : 283 = 0 | 787 : 781 = 6 |
278 : 279 = -1 | 963 : 957 = 6 |
出力が次のようになります。
261 : 261 = 000 | 1192 : 1184 = 0008 |
283 : 283 = 000 | 0666 : 0659 = 0007 |
267 : 267 = 000 | 0631 : 0620 = 0011 |
283 : 283 = 000 | 0787 : 0781 = 0006 |
278 : 279 = -001 | 0963 : 0957 = 0006 |
この結果を得るには、次のスクリプトを使用してください。
count100=`grep -ach "0100 $GivenBIN" $line`
count110=`grep -ach "0110 $GivenBIN" $line`
filename=`echo $line | awk -F"/" '{print $NF}'`
echo -e "$filename $count100 : $count110 = $ans1| $count220 : $count230 = $ans4 |"
ベストアンサー1
あなたの入力と出力の例に基づいて、私の考えでは
- 数値列は常にスペースで区切られます。
- 各数値列の型を既知の固定幅で指定しようとしています。
- 与えられた各列の各行が同じ桁数を持つことを望みます。
- 列には先行記号(スペースまたは
-
)があります。
printf
これは、各数値列に書式を適用する次のawkスクリプトに変換されます。
awk 'BEGIN {
widths[1]=widths[3]=3;
widths[5]=" 4";
widths[7]=widths[9]=widths[11]=4
}
{
for (i in widths) $i = sprintf("%0" widths[i] "d", $i);
print
}'