我是编程新手,我正在尝试编写我的第一个bash脚本。
我有一个名为NUMBERS.txt
的文件,其中包含各种数字:
1000
1001
1001
1000
1002
1001
etc..
我想编写一个脚本来计算每个数字的出现次数,将其保存为变量并将其打印到新的文本文件中:
1001= 3
1000= 2
etc..
我完全陷入困境。
这是我到目前为止所拥有的:
#!/bin/bash
for Count in `grep -c '1000' /NUMBERS.txt `
do
echo 'Count = '${Count}
done
for Count in `grep -c '1001' /NUMBERS.txt `
do
echo 'Count = '${Count}
done
答案 0 :(得分:4)
对文件进行排序,然后计算每个唯一线出现的次数:
sort NUMBERS.txt | uniq -c
答案 1 :(得分:1)
现在你的文件在每一行上都有一个数字,它更简单
for i in `sort -u NUMBERS.txt ` ; do count=`grep -c "$i" NUMBERS.txt ` ; echo "$i=$count" ; done > your_result.txt
或采用其他格式
for i in `sort -u NUMBERS.txt `
do
count=`grep -c "$i" NUMBERS.txt `
echo "$i=$count"
done > your_result.txt
按照要求,表现不是很好。这是一个更好的一个
sort NUMBERS.txt | uniq -c | awk '{print $1,"=",$2}'
基本上你会经历两次NUNMBERS.txt。第一遍,你得到唯一的数字; 第二遍你计算每个唯一数字的出现次数。
答案 2 :(得分:1)
我不是最好的shell脚本,但这是一个有效的解决方案,使用bash和grep -c:
#!/bin/bash
INPUT="./numbers.txt"
OUTPUT="./result.txt"
rm -f ${OUTPUT}
# you might want to change the values
for i in {1000..2000}; do
for Count in `grep -c ${i} ${INPUT}`; do
echo "${i} = ${Count}" >> ${OUTPUT}
done
done