【问题标题】:Grep a particular length of characters [duplicate]Grep特定长度的字符[重复]
【发布时间】:2019-01-05 05:55:56
【问题描述】:

假设我有一个包含某些内容的文件 foo.txt:

abcds9912:        8c b2           1e12
asddb221          jj 7u 9i         e2e1

现在我只想grep 8c, b2, jj, 7u, 9i 即成对出现的字符

到目前为止我已经尝试过

cat foo.txt | grep -Eo '[a-z0-9]{2}'

但是没用

【问题讨论】:

    标签: regex linux bash shell grep


    【解决方案1】:

    您可以使用字符类的单词边界来实现这一点

    $ cat foo.txt | grep -Eo '\b[[:alnum:]]{2}\b'

    $ grep -Eo '\b[[:alnum:]]{2}\b' foo.txt

    【讨论】:

      【解决方案2】:
       cat foo.txt | grep -E -w -o '\w{2}'
      

      【讨论】:

        【解决方案3】:

        以下内容也可能对您有所帮助。

        awk --re-interval -v RS=" " -v FS="" '/^[[:alnum:]]{2}$/' Input_file
        

        由于我的awk 版本是旧版本,我使用的是--re-interval,如果您使用的是新版本的wk,您可以将其删除。

        【讨论】:

          【解决方案4】:

          你需要使用单词边界,你可以使用:

          \b[a-z0-9]{2}\b
          

          你的命令是:

          cat foo.txt | grep -Eo '\b[a-z0-9]{2}\b'
          

          【讨论】:

            猜你喜欢
            • 2021-03-03
            • 1970-01-01
            • 2023-03-26
            • 1970-01-01
            • 2011-03-24
            • 1970-01-01
            • 1970-01-01
            • 2021-11-07
            • 2015-10-21
            相关资源
            最近更新 更多