【问题标题】:Find words that are 6 characters in length查找长度为 6 个字符的单词
【发布时间】:2015-12-28 17:34:37
【问题描述】:

我有一个文件.txt

fhadja
ksjfskdasd
adasda
sada
s
adasaaa

我只需要从那里提取 6 个字符长度的单词。

我需要获得的结果示例:

fhadja
adasda

谢谢。

【问题讨论】:

    标签: bash parsing text-parsing


    【解决方案1】:

    你可以使用:

    grep -E '^.{6}$' file
    fhadja
    adasda
    

    或者使用 awk:

    awk 'length($0)==6' file
    fhadja
    adasda
    

    或者使用sed:

    sed -rn '/^.{6}$/p' file
    fhadja
    adasda
    

    【讨论】:

    • 但如果我还需要所有以字母“f”开头且长度为 6 的单词?谢谢!
    • 然后使用:grep -E '^f.{5}$' file
    【解决方案2】:

    用 GNU grep 试试这个:

    grep -E '^.{6}$' file
    

    输出:

    法贾 阿达斯达

    【讨论】:

      【解决方案3】:

      或者perl:

      perl -ne 'print if 6 == tr/\n//c' file
      

      【讨论】:

        【解决方案4】:

        只是为了好玩:bash 中的另一个解决方案

        while read -r line
        do
            if [ ${#line} -eq 6 ]
            then
              echo $line
            fi
        done < file.txt
        

        你明白了,

        法贾 阿达斯达

        【讨论】:

          【解决方案5】:

          如果您的文件可以包含空格,请确保您匹配的是非空白字符:

          grep -oE '\<[[:graph:]]{6}\>' << END
           fhadja
             ksjfskdasd
             adasda
             sada s 123456
             s
           2 4 6
          END
          
          fhadja
          adasda
          123456
          

          【讨论】:

            猜你喜欢
            • 2015-05-21
            • 2013-11-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-27
            • 1970-01-01
            • 1970-01-01
            • 2012-02-02
            • 2015-04-23
            相关资源
            最近更新 更多