我应该使用哪个正则表达式才能从grep -in输出中获取行号? 通常的输出是这样的: 241113:关键字
我需要从sed的输出中获得“241113”。
答案 0 :(得分:7)
我建议剪切
grep -in keyword ... | cut -d: -f1
如果你坚持使用sed:
grep -in keyword ... | sed 's/:.*$//g
答案 1 :(得分:4)
您不需要使用sed。切就够了。只需将grep的输出传递给
cut -d ':' -f 1
举个例子:
grep -n blabla file.txt | cut -d ':' -f 1
答案 2 :(得分:2)
就个人而言,我喜欢awk
grep -in 'search' file | awk --field-separator : '{print $1}'
答案 3 :(得分:2)
如其他答案所述,cut
是正确的工具;但如果你真的想使用瑞士军刀,你也可以使用awk
:
grep -in keyword ... | awk -F: '{print $1}'
或再次使用grep
:
grep -in keyword ... | grep -oE '^[0-9]+'
答案 4 :(得分:0)
以防万一有人想知道如果没有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