Linux GREP两个特定的列

Linux GREP两个特定的列,linux,bash,grep,Linux,Bash,Grep,我有一个文件,每行有两个单词,使用GREP我必须验证两个条件: 如果第一个单词以特定字母开头,例如“a” 第二个单词相同,但字母不同,例如“B” 我知道怎么做,只为第一个字验证 grep '^A' file 但是如何验证第二个单词?您可以使用awk: awk '$1 ~ /^A/ && $2 ~ /^B/' file egrep '^A[^[:blank:]]*[[:blank:]]+B' file 如果您想避免使用正则表达式,可以使用以下awk: awk 'index($

我有一个文件,每行有两个单词,使用GREP我必须验证两个条件:

  • 如果第一个单词以特定字母开头,例如“a”

  • 第二个单词相同,但字母不同,例如“B”

  • 我知道怎么做,只为第一个字验证

    grep '^A' file
    

    但是如何验证第二个单词?

    您可以使用
    awk

    awk '$1 ~ /^A/ && $2 ~ /^B/' file
    
    egrep '^A[^[:blank:]]*[[:blank:]]+B' file
    
    如果您想避免使用正则表达式,可以使用以下awk:

    awk 'index($1, "A")==1 && index($2, "B")==1' file
    
    这里有一个
    egrep
    命令,用于相同但更喜欢
    awk

    awk '$1 ~ /^A/ && $2 ~ /^B/' file
    
    egrep '^A[^[:blank:]]*[[:blank:]]+B' file
    
    那么:

    grep '^A[a-zA-Z]* B' file
    

    您可以使用
    egrep
    和正则表达式:

    $ egrep '^A.*\s+B' file
    
    egrep
    也可以通过
    grep-E
    获得:

    $ grep -E '^A.*\s+B' file
    

    这里的正则表达式是“以A开头,有一些字符,然后至少有一个空格,然后是A B”。

    我必须使用grepWhy?这不是适合这项工作的工具。或者这是作业?第一个单词可能只有一个字母。