我应该使用哪个正则表达式来从grep -in输出中仅获取行号?
通常的输出如下所示:
241113:关键字
我需要从sed的输出中仅获取“241113”。
我需要从sed的输出中仅获取“241113”。
我建议剪切
grep -in keyword ... | cut -d: -f1
grep -in keyword ... | sed 's/:.*$//g
cut -d ':' -f 1
grep -n blabla file.txt | cut -d ':' -f 1
就我个人而言,我喜欢awk。
grep -in 'search' file | awk --field-separator : '{print $1}'
正如其他答案所述,cut
是正确的工具;但如果你真的想使用瑞士军刀,也可以使用awk
:
grep -in keyword ... | awk -F: '{print $1}'
或者再次使用 grep
命令:
grep -in keyword ... | grep -oE '^[0-9]+'
万一有人想知道是否可以不用 grep
,只用 sed
就能完成所有操作...
echo '
a
b
keyword
c
keyWord
x
y
keyword
Keyword
z
' |
sed -n '/[Kk][Ee][Yy][Ww][Oo][Rr][Dd]/{=;}'
#sed -n '/[Kk][Ee][Yy][Ww][Oo][Rr][Dd]/{=;q;}' # only line number of first match