关于AWK的一个问题!如何对文件分组进行统计?!见补充问题
1.txt111abc222abc333efg想得到如下结果应该怎么写呢!?abc2efg1谢谢!!!!...
1.txt
111 abc
222 abc
333 efg
想得到如下结果应该怎么写呢!?
abc 2
efg 1
谢谢!!!! 展开
111 abc
222 abc
333 efg
想得到如下结果应该怎么写呢!?
abc 2
efg 1
谢谢!!!! 展开
3个回答
展开全部
用shell脚本。
#!/bin/bash
myfile="1.txt"
touch tmp
while read line
do
info=`echo "$line"|awk '{print $2}'`
grep "$info" tmp >/dev/null 2>&1
if [ $? -eq 0 ]; then
num=`awk '{print $NF}' tmp`
num=`expr $num + 1`
sed -i "s/^\($info\t\)[0-9]*$/\1$num/" tmp
else
echo "$line"|awk '{print $2"\t"1}' >>tmp
fi
done <$myfile
exit 0
只需从头到尾遍历文件一次。与下面链接里的问题类似。
——————————————————————————————————
楼上shuguangbo的方法非常简洁,学习了!
#!/bin/bash
myfile="1.txt"
touch tmp
while read line
do
info=`echo "$line"|awk '{print $2}'`
grep "$info" tmp >/dev/null 2>&1
if [ $? -eq 0 ]; then
num=`awk '{print $NF}' tmp`
num=`expr $num + 1`
sed -i "s/^\($info\t\)[0-9]*$/\1$num/" tmp
else
echo "$line"|awk '{print $2"\t"1}' >>tmp
fi
done <$myfile
exit 0
只需从头到尾遍历文件一次。与下面链接里的问题类似。
——————————————————————————————————
楼上shuguangbo的方法非常简洁,学习了!
参考资料: http://zhidao.baidu.com/question/270656814.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询