私は次のフラットファイルを持っていますemployees.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
各部門の人数を数えたい。次のようなコマンドを使用してこれを行うより短い方法があることは知っていますがawk '{print $4}' employees.txt | sort | uniq -c
、入力を行ごとに読み取って、whileループの仕組みを学びたいと思います。
#!/bin/bash
awk '{print $4}' employees.txt > temp_file
array=[]
while read line
do
if [[ $array[$line] ]]
then
$array[$line]=$(($array[$line]+1))
else
$array[$line]=0
fi
done < temp_file
このスクリプトを実行すると、エラーが発生します./process.sh: line 9: [][Sales]+1: syntax error: operand expected (error token is "[][Sales]+1")
done
また、キーワードの後に4列目のエントリを取得するために使用できる構文はありますか?私は試しdone < awk '{print $4}' employees.txt
ましたが、それは正しくありませんでした。
また、の出力をawk '{print $4}' employees.txt > temp_file
一時ファイルではなく変数に保存する方法はありますか?