Chinaunix

标题: wc有个坑 [打印本页]

作者: seesea2517    时间: 2014-07-22 10:33
标题: wc有个坑
一直理解 wc -l 是计算行数:
  1.        -l, --lines
  2.               print the newline counts
复制代码
昨天操作发现它就只是计算文件中换行的个数。我有一个文件最后一行没换行,计算的数量少了一个,我说怎么算怎么不对。

大家多多注意,别掉wc的坑里了 {:3_192:}
作者: 丿妖月    时间: 2014-07-22 10:36
没换行 怎么算2行呢?
作者: Shell_HAT    时间: 2014-07-22 10:37
后来你是采用什么方法计算行数的呢
作者: zooyo    时间: 2014-07-22 10:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: yestreenstars    时间: 2014-07-22 11:09
被你发现了~
作者: seesea2517    时间: 2014-07-22 11:35
回复 3# Shell_HAT


    vim 里 set nu 看的……
作者: seesea2517    时间: 2014-07-22 11:35
回复 4# zooyo


    @yestreenstars 两位坏人不早告诉我
作者: jason680    时间: 2014-07-22 11:43
回复 1# seesea2517

try to use awk

$ echo -en "abc" | wc -l
0

$ echo -en "abc\n123" | wc -l
1

$ echo -en "abc" | awk 'END{print NR}'
1

$ echo -en "abc\n123" | awk 'END{print NR}'
2


   
作者: reyleon    时间: 2014-07-22 11:49
必须的啊... 以前遇到过  
作者: seesea2517    时间: 2014-07-22 17:30
回复 8# jason680


    you are right, awk can avoid this case, great:
  1. [seesea@UC ~]$ echo -en "abc\n123" | awk 'END{print NR}'
  2. 2
  3. [seesea@UC ~]$ echo -en "abc\n123\n" | awk 'END{print NR}'
  4. 2
  5. [seesea@UC ~]$ echo -en "abc\n123\n" | wc -l
  6. 2
  7. [seesea@UC ~]$ echo -en "abc\n123" | wc -l  
  8. 1
复制代码

作者: seesea2517    时间: 2014-07-22 17:31
回复 9# reyleon


    竟然自己偷偷乐,还好发现这个坑,不然我今天就掉进去了……
作者: 刺客阿地    时间: 2014-07-22 18:01
@seesea2517
这例子看懂了,awk不是根据换行符计算行数的,wc -l是根据换行符计算行号。。。是这么理解的吧,大神!
作者: 雪域之狼    时间: 2014-07-22 18:57
WC里没坑,还叫WC吗
作者: seesea2517    时间: 2014-07-23 13:48
回复 12# 刺客阿地


    不敢当啊,差点掉坑里。
作者: seesea2517    时间: 2014-07-23 13:49
回复 13# 雪域之狼


    这么久终于有明白人了~别人都在说命令哈哈。隔壁的哥们儿借个火儿,打火机没气了。
作者: zhleiling    时间: 2014-07-23 16:35
  回复 13# 雪域之狼


   
作者: davidbeckham921    时间: 2014-07-23 17:30
jason680 发表于 2014-07-22 11:43
回复 1# seesea2517

try to use awk

牛逼大大的!
一般就比比之前之后是不是一样多




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2