【发布时间】:2019-03-03 23:24:50
【问题描述】:
我正在尝试获取文件中的行数。 我正在使用:
wc -l Example.master | sed 's/.\([0-9]+\)./\1/'
这对我不起作用,但我认为应该这样做。它不匹配。就我而言,该文件有 5 行长,所以我得到:
*5 Example.master*
但是,以下 - 确实 - 工作(但通常不正确,因为文件当然可能超过 9 行):
c -l Example.master | sed 's/.\([0-9]\)./\1/'
这有效并打印出来:
5
我想使用 'sh' 来完成这项工作,而不必使用 'bash'。替代品会很好,但我想了解为什么我不能使用 [0-9]+ :(
【问题讨论】:
-
试试
wc -l Example.master | awk '{print $1}' -
要使
+工作,您需要指定-E。试试sed -E 's/[^0-9]*([0-9]+).*/\1/' -
顺便说一句,通过
wc -l < Example.master不打印文件名可能更容易(在标准输入上传递数据而不是给 wc 一个路径作为参数) -
你@WilliamPursell。 -E 效果很好(我应该在阅读手册页时注意到这一点!)并且使用 stdin 也是一个不错的解决方案。