Grep Unix:以特定字符开头和结尾的字符串,并将其写入文本文档

Grep Unix:以特定字符开头和结尾的字符串,并将其写入文本文档,grep,Grep,因此,基本上,任务是统计当前登录到机器中的学生ID以15或16开头,以偶数结尾的who(putty中的命令)的学生数量,并将输出写入文件sample.txt 我试过这个命令,但似乎不起作用 grep '^15\|16.*[02468]' | who | wc -l > sample.txt 例如: 155053 165054 175055 155056 行数:2 有什么想法吗?你需要 grep '^1[56].*[02468]$' 看 Detais ^-字符串的开头 1-1 [56]

因此,基本上,任务是统计当前登录到机器中的学生ID以15或16开头,以偶数结尾的who(putty中的命令)的学生数量,并将输出写入文件sample.txt

我试过这个命令,但似乎不起作用

grep '^15\|16.*[02468]' | who | wc -l > sample.txt
例如:

155053

165054

175055

155056

行数:2

有什么想法吗?

你需要

grep '^1[56].*[02468]$'

Detais

  • ^
    -字符串的开头
  • 1
    -
    1
  • [56]
    -
    5
    6
  • *
    -ant 0+字符(如果要确保只匹配pnly个数字的字符串,请替换为
    [0-9]*
  • [02468]
    -
    0
    2
    4
    6
    8
  • $
    -字符串结束
    • 您需要

      grep '^1[56].*[02468]$'
      

      Detais

      • ^
        -字符串的开头
      • 1
        -
        1
      • [56]
        -
        5
        6
      • *
        -ant 0+字符(如果要确保只匹配pnly个数字的字符串,请替换为
        [0-9]*
      • [02468]
        -
        0
        2
        4
        6
        8
      • $
        -字符串结束

      它似乎不起作用,putty不能让我访问新命令。通常可以[185053@os~]然后是一个新命令,但现在没有。我认为这与
      命令有关它说
      -bash:无法为此处创建临时文件文档:当我输入时,设备0上没有剩余空间it@BojanPetkovski
      who
      输出在
      ubuntupts/0200-05-18 08:02(12.34.56.789)
      -难道你不想做一些类似于
      谁| grep'..'
      ?但是预期的输出是什么呢?它似乎不起作用,putty没有给我访问新命令的权限。通常可以[185053@os~]然后是一个新命令,但现在没有。我认为这与
      命令有关它说
      -bash:无法为此处创建临时文件文档:当我输入时,设备0上没有剩余空间it@BojanPetkovski
      who
      输出在
      ubuntupts/0200-05-18 08:02(12.34.56.789)
      -难道你不想做一些类似于
      谁| grep'..'
      ?但是预期的结果是什么呢?为什么您的尝试没有成功(它产生了太多的点击):您没有在任何地方使用括号,因此交替(或选择)介于
      ^15
      16.[02468]
      之间。因此,您将选择以15开头的所有字符串(无论后面是什么),以及字符串中任何位置都有16的所有字符串,然后以偶数结尾。(但哪个数字必须与
      16
      匹配中的
      6
      不同)。您希望“开始”锚应用于所有内容,并且
      *[02468]
      应用于所有内容;因此,括号中需要
      15\| 16
      。但是,当然,
      1
      对于这两个选项都是通用的,因此您可以重写为
      ^1(5\|6).[02468]$
      。最后,
      \(5\\;6\)
      [56]
      (从列表中选择一个字符)相同。为什么您的尝试不起作用(它产生了太多的点击):您没有在任何地方使用括号,所以交替(或选择)介于
      ^15
      16.[02468]
      之间。因此,您将选择以15开头的所有字符串(无论后面是什么),以及字符串中任何位置都有16的所有字符串,然后以偶数结尾。(但哪个数字必须与
      16
      匹配中的
      6
      不同)。您希望“开始”锚应用于所有内容,并且
      *[02468]
      应用于所有内容;因此,括号中需要
      15\| 16
      。但是,当然,
      1
      对于这两个选项都是通用的,因此您可以重写为
      ^1(5\|6).[02468]$
      。最后,
      \(5\| 6\)
      [56]
      相同(从列表中选择一个字符)。