开发者

using sed to get only line number of "grep -in"

Which regexp should I use to only get line number from grep -in output? The usual output is something like this: 241113:keyword

I need to get only开发者_如何学编程 "241113" from sed's output.


I suggest cut

 grep -in keyword ... | cut -d: -f1

If you insist with sed:

 grep -in keyword ... | sed 's/:.*$//g


You don't need to use sed. Cut is enough. Just pipe grep's output to

cut -d ':' -f 1

As an example:

grep -n blabla file.txt | cut -d ':' -f 1


Personally, I like awk

grep -in 'search' file | awk --field-separator : '{print $1}'


As said in other answers, cut is the right tool; but if you really want to use a swiss-army knife, you can also use awk:

grep -in keyword ... | awk -F: '{print $1}'

or using grep again:

grep -in keyword ... | grep -oE '^[0-9]+'


Just in case someone is wondering if all this could be done without grep, i.e. with sed alone ...

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜