所选文本之前和之后的单词
我的 SQL 查询看起来像这样...
sekect * FROM mail_headers 左连接 mail_headers_body b ON a.mailid=b.id 哈哈哈哈哈哈
我可以使用 -A、-B 开关选择结果之前和之后的行。但是如何找到所选文本前后的 4 个单词呢?
grep -i 'JOIN mail_headers_body' mysql-gen.log
这将返回上面提到的查询。但我想知道的是所选文本之前的 4 个“单词”。即
FROM mail_headers a LEFT
4(或 5)个词之后...
b ON a.mailid=b.id blah
My SQL query looks like this...
sekect * FROM mail_headers a LEFT JOIN
mail_headers_body b ON a.mailid=b.id
blah blah blah
I can select the lines before and after the result, using -A, -B switches. But how do I find the 4 words before and after the selected text?
grep -i 'JOIN mail_headers_body' mysql-gen.log
This will return the query mentioned above. But what I want to know is 4 "words" before the selected text. i.e.
FROM mail_headers a LEFT
And 4 (or 5) words after...
b ON a.mailid=b.id blah
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
它应该给你这个输出:
Try this:
It should give you this output:
以下是 AWK、GREP 和 CAT 的单行组合:
更新:我刚刚删除了一个——;来自 awk。我刚刚意识到它跳过了 JOIN 之前的第一个单词,即 LEFT。
Here is the AWK, GREP, and CAT combinations in a one-liner:
update: I just removed a--; from the awk. I just realized it was skipping the first word before JOIN which is LEFT.
您可以使用 awk,
假设您只有 1 个“JOIN mail_headers_body”。否则,使用 for 循环来迭代字段。
you can use awk,
this is assuming you have only 1 "JOIN mail_headers_body". Otherwise, use a for loop to iterate the fields.