如何grep以数字开头并包含特定字符串的行

时间:2018-10-18 23:46:28

标签: regex shell grep

如何使用grep输出以数字1开头并同时包含字符串的行。

1 A ATC
1 ATT T
1 ATG 8
2 ATC 1

例如,在这里我需要以1开头并包含ATC的行 我希望grep列出1个ATC。

请注意,我不需要同时具有1和ATC的行,而是需要它们以1开头并且在同一行上具有ATC

3 个答案:

答案 0 :(得分:0)

如果您要查找以“ 1”开头且包含“ ATC”的行,则可能最简单:

grep '^1.*ATC'

答案 1 :(得分:0)

您可以使用以下任何grep命令:

grep '^1 .*ATC' <<< "$s"
grep '^1\b.*ATC' <<< "$s"
grep '^1\>.*ATC' <<< "$s"
grep -E '^1([^0-9].*)?ATC' <<< "$s"

请参见online demo

详细信息

  • ^1 .*ATC匹配以1开头的行(请参阅^1,其中^是行的开头),然后是一个空格(用{{1}替换}匹配1个或更多水平空白[[:blank:]][[:blank:]]* ATC`
  • ), then any 0+ chars followed with及其等效的^1\b.*ATC在行首匹配^1\>.*ATC,然后检查单词边界位置,然后跟在1之后的任何0+字符匹配
  • ATC有点高级:^1([^0-9].*)?ATC在行的开头匹配,然后匹配可选序列:任何非数字字符(1),然后是任何0个以上的字符。然后,[^0-9]将被匹配。此解决方案允许进行ATC匹配。

答案 2 :(得分:0)

grep是错误的工具。如果要进行算术运算(检查列的整数值而不是文本表示形式),则需要awk

awk '$1 == 1 && /ATC/' input-file