2017-04-25 85 views
1

我需要在文件中的特定位置grep文件的2个连续字符。我可以grep使用(在这个例子中,我grepping为数字1)单个字符:如何grep在特定文件位置的两个字符

grep -E '^.{50}[1]' file.txt 

该搜索的第一个字符,但我不知道如何检查第2个字符。 2个字符是一个时间戳,我需要搜索小时18至23和00至06. 任何帮助,一如既往,赞赏:)

+2

如果您发布了输入字符串和预期输出,那将会很不错 – RomanPerekhrest

回答

3

如果你正在寻找一个小时是在集(18,19,20,21,22,23),你想使用“|”运算符在一组括号内:

grep -E '^.{50}(18|19|20|21|22|23)' file.txt 

这将匹配'|'中的任何模式,从该行的第51个字符开始的分隔列表。

要检查在第51和第52偏移两个重复的数字,尝试:

grep -E '^.{50}([0-9])\1' file.txt

后面引用(\ 1)这里说“匹配由第一组括号encosed模式”。在这种情况下,如果在文件的不同行中有11,12,13,21,22和23,则只有包含11和22的行会匹配。 [0-9]将其限制为数字,并且\ 1表示与第一个数字匹配。

+0

非常棒,非常感谢:) – machinist

相关问题