egrep 每行的前几个字符?

egrep 每行的前几个字符?

假设我有一个文本文件

txt.txt

hello supdijfdsfsddsgs
hghgh hsdjghjfhgjfhgjfhg
hghgh yyyyyereuryueyruey

我想打印这些行,以便只有第一个5字符是序列hghgh

所以,它应该打印

    hghgh hsdjghjfhgjfhgjfhg
    hghgh yyyyyereuryueyruey

egrep 应该如何?

egrep -5 "hghgh" txt.txt

答案1

这样就可以做到:

grep '^hghgh' txt.txt

egrepis just grep -E(就像fgrepis grep -F),但-E这里不需要,因为我们不需要使用扩展正则表达式。

(基本)正则表达式与行开头的^hghgh文字字符串匹配。hghgh它将^模式锚定到行的开头。

如果你想匹配精确的stringhghgh位于行的开头,而不是 eg hghghaaaaaa(其中hghgh是子字符串),然后在表达式末尾使用\>or\b[[:>:]]来匹配该单词的结尾:

grep '^hghgh\>' txt.txt

或者,使用awk第一个字段并进行字符串比较:

awk '$1 == "hghgh"' txt.txt

答案2

有很多方法可以给这只猫剥皮。

使用grepgrep -E并且egrep也可以工作,但这只是grep这里工作的准系统):

grep '^hghgh' /path/to/input

sed

sed -n '/^hghgh/p' /path/to/input
sed '/^hghgh/!d' /path/to/input

awk

awk '/^hghgh/' /path/to/input

这是以下的缩写:

awk '/^hghgh/ { print $0 }' /path/to/input

或者

awk 'index($0, "hghgh") == 1' /path/to/input

或者

awk 'substr($0, 1, 5) == "hghgh"' /path/to/input

相关内容