【问题标题】:How to get the first number in a string using sed with 'sh'如何使用带有'sh'的sed获取字符串中的第一个数字
【发布时间】: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 也是一个不错的解决方案。

标签: parsing sed sh token line


【解决方案1】:

这可能对你有用(GNU sed):

sed '$=;d' file

或者:

sed -n '$=' file

两者都打印文件最后一行的行号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多