LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 958|回复: 4

出道题:如何找出文件中字符数最多的一行?

[复制链接]
发表于 2003-7-20 00:31:22 | 显示全部楼层 |阅读模式
文件如下:
abc,kklkl
sjl;djkl;slafd
jweriowoeriwer
ABC
sdjklfsl;dfjl;sjfdasfa
jweroweru
LEE
dljasl;df;asdf
wierowoperuowrweur
weruewoiruopwere
djlasjkldABC;fjl;skaf,sdfaskldjfowier,werwejorweirererreer
we.
ABC
asjldfjljasldjflkajl;sfjdljalsdfjl;kajsdfl;j
ABC
0054305u3u45034
就是红字的那行!?
 楼主| 发表于 2003-7-20 01:26:43 | 显示全部楼层
第一步计算,由于用wc -L后行的长度要增加,所以要+1:
[/home/javalee/myshell]((num=$(cat tmp|wc -L)+1))
第二步出结果:
[/home/javalee/myshell]while read line
> do
> echo -n $line;echo $line|wc -c
> done<tmp|grep $num
djlasjkldABC;fjl;skaf,sdfaskldjfowier,werwejorweirererreer     59
这是我的方法,相信兄弟们一定有更简炼的法子,欢迎指教
发表于 2003-7-20 09:47:59 | 显示全部楼层
$awk '{line=length($0); if(max<line) {max=line; str=$0}} END {print max"\n"str;}' rawdata.3
58
djlasjkldABC;fjl;skaf,sdfaskldjfowier,werwejorweirererreer
发表于 2003-7-20 09:49:28 | 显示全部楼层

新的问题

如果有不止一行文件具有最大长度怎么做? 尽量简化,只许用pipe :-) 最好一行搞定

javalee兄的脚本是可以处理这种情况的,我的awk不行 :-(
嗯。。写了一个类似的脚本,但是不够简练
  1. #!/bin/bash
  2. declare -i maxlength;
  3. maxlength=$(cat $1 | wc -L);
  4. echo $maxlength;
  5. while read line
  6. do
  7. ((${#line} == maxlength)) && echo $line;
  8. done < $1
复制代码
这个思路和javalee兄那个是一样的
 楼主| 发表于 2003-7-20 15:06:07 | 显示全部楼层
这个问题是我在CHINAUNIX上看到的,不过他们没有提供解决方法,所以我拿过来,我们自己练练;),penny兄果然厉害!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表