Sed命令提取一组数字

Sed命令提取一组数字,sed,Sed,我有如下3种说法: abcdef (123) adf4fggggh (456) ssff444fgff (4667) 通过使用sed命令,我需要提取最后的数字,即123,456,4667,您可以通过替换来完成此操作。这个正则表达式将匹配整行,捕获数字并将数字放回原处 假设您的行位于名为file.txt的文件中: sed的/*(\([0-9]\+\)/\1/'file.txt s- /- *-匹配 (-匹配括号 \(-开始 [0-9]\+-匹配(捕获)任何 \)-关闭 )-匹

我有如下3种说法:

abcdef       (123)
adf4fggggh   (456)
ssff444fgff  (4667)

通过使用sed命令,我需要提取最后的数字,即
123
456
4667

,您可以通过替换来完成此操作。这个正则表达式将匹配整行,捕获数字并将数字放回原处

假设您的行位于名为file.txt的文件中:

sed的/*(\([0-9]\+\)/\1/'file.txt

  • s-
  • /-
  • *-匹配
  • -匹配括号
  • \(-开始
  • [0-9]\+-匹配(捕获)任何
  • \)-关闭
  • -匹配最后一个括号
  • /-
  • \1-打印第一个替换上一个正则表达式匹配项
  • /-

    • 您可以通过替换来完成此操作。这个正则表达式将匹配整行,捕获数字并将数字放回原处

      假设您的行位于名为file.txt的文件中:

      sed的/*(\([0-9]\+\)/\1/'file.txt

      • s-
      • /-
      • *-匹配
      • -匹配括号
      • \(-开始
      • [0-9]\+-匹配(捕获)任何
      • \)-关闭
      • -匹配最后一个括号
      • /-
      • \1-打印第一个替换上一个正则表达式匹配项
      • /-

      grep获取最后括号之间的数字:

      grep -Po '\d+(?=\)$)'
      


      grep获取最后括号之间的数字:

      grep -Po '\d+(?=\)$)'
      

      • 带有一点安全性的posix版本(不对应的在线)
      • 您可以在digit类可能出现负值之前添加一个
        -\{0,1\}
        (如果也可能出现虚线值,则与
        的想法相同)
      • 带有一点安全性的posix版本(不对应的在线)
      • 您可以在digit类可能出现负值之前添加一个
        -\{0,1\}
        (如果也可能出现虚线值,则与
        的想法相同)
      sed -n '/.*(\([0-9]\{1,\}\))[[:blank:]]*$/ s//\1/p' file.txt